最近几天复盘了一下NOI 2021,愈发发觉自己的愚蠢,可惜D2T3仍是不会,于是只写前面的题解

Day1 T1

可以发现,每次相当于将 \(x\to y\) 染上一种全新颜色,然后一条边是重边当且仅当两端有颜色且相同,于是就可以使用树链剖分维护了。

复杂度 \(\Theta(n\log^2n)\)。

Day1 T2

可以发现,当 \(n_i\) 都相同的是,答案就是邻接矩阵行列式的积,也即是邻接矩阵积的行列式。

拓展发现,\(n_i\) 不同的时候依旧适用,不过不会证明。

Day1 T3

首先可以发现,在缩点之后一定存在一种树形结构使得不改变连通性,因为假设存在 \(z\to x,y\to x,z\to y\),那么 \(z\to x\) 是不需要的。所以在构造树的时候可以选一个入度为 \(0\) 的点开始,然后每次儿子从 scc 序大的开始。

假设已经建好了树,可以发现 \(k=0\) 时有解的话就是 \(x\to y\) 上链上点的大小之和,\(k=1\) 的话需要分类讨论,\(k\) 更大时显然分类讨论不是很好搞。

发现假设我们定义“好点”为新增边的端点中既能从 \(s\) 到达又能到 \(t\) 的点(合法情况下包括 \(s,t\)),那么一个点合法当且仅当祖先中有“好点”,子树中有“好点”。

那我们就可以建出虚树,然后算贡献了。(然而似乎可以不用建出虚树)。

Day2 T1

不难发现分成 \(16\) 段的话,如果有解那么解的方案一定有一段完全相同,然后你发现随机情况下一段最多有 \(7\) 个左右,暴力判就好了。算差异的话可以用 __builtin_popcount \(\Theta(1)\) 计算。

Day 2 T2

首先可以看出并不需要除以 \(\gcd\)。

可以发现如果 \(a_i\) 是确定的,那么:

\[\begin{bmatrix}
a_i & 1\\
1 & 0
\end{bmatrix}\]

从右往左算的积的 \((0,0)\) 位和 \((0,1)\) 位就是答案。

考虑 W 操作的影响,你发现:

\[\begin{bmatrix}
1 & 1\\
0 & 1\\
\end{bmatrix}
\times
\begin{bmatrix}
a_i & 1\\
1 & 0
\end{bmatrix}
=
\begin{bmatrix}
a_i+1 & 1\\
1 & 0
\end{bmatrix}
\]

所以就相当于在后面增加一个

\[\begin{bmatrix}
1 & 1\\
0 & 1
\end{bmatrix}
\]

的矩阵。

考虑 E 操作,不难发现两种情况其实操作下来等价,所以我们只需要考虑第二种情况。实际上就是增加:

\[\begin{bmatrix}
1 & 1\\
1 & 0
\end{bmatrix}
\begin{bmatrix}
1 & 1\\
1 & 0
\end{bmatrix}
\begin{bmatrix}
1 & -1\\
0 & 1
\end{bmatrix}
\]

又因为矩阵有结合律,所以就相当于增加:

\[\begin{bmatrix}
2 & -1\\
1 & 0
\end{bmatrix}
\]

所以用平衡树维护就好了。需要卡常的话可以把矩阵乘法那里手写而非循环形式。

NOI 2021 部分题目题解的更多相关文章

  1. [NOI 2021] 轻重边 题解

    提供一种和不太一样的树剖解法(一下考场就会做了qwq),尽量详细讲解. 思路 设重边为黑色,轻边为白色. 首先,先将边的染色转化为点的染色(即将 \(u\) 节点连向父节点的边的颜色转化为 \(u\) ...

  2. ZROI 部分题目题解

    ZROI 部分题目题解 335 首先发现一个性质: 对于最短的边而言,所有点的路径如果经过了这条边,那么路径的权值就是这条边的边权(废话) 那么我们把最短的边拎出来,可以发现,博物馆确定时,每个点按照 ...

  3. PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

    PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...

  4. 2021.07.17 题解 CF1385E Directing Edges(拓扑排序)

    2021.07.17 题解 CF1385E Directing Edges(拓扑排序) CF1385E Directing Edges - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) ...

  5. CodeForce——Deltix Round, Autumn 2021 (open for everyone, rated, Div. 1 + Div. 2)前三道题目题解

    目录 A: B: C: 题目链接 A Divide and Multiply standard input/output 1 s, 256 MB 正在上传-重新上传取消 x13036 B Willia ...

  6. LuoguB2001 入门测试题目 题解

    Update \(\texttt{2021.7.3}\) 经测试,本题 \(a,b\) 范围在 long long,对代码进行了修改,并修改一些笔误,更新了数据范围. \(\texttt{2021.7 ...

  7. Diary -「NOI 2021」酱油记

    雨幕浓稠 远近一白 是水雾弥漫的天 还是泡沫撑起的海   雨真大呢.   前几天去 ZH 中学集训没啥好记的,就从会合日开始叭. [Day -1]   逃出 ZH,掉入梦麟.(   高中的同学们忘记带 ...

  8. chd校内选拔赛题目+题解

    题目链接   A. Currency System in Geraldion 有1时,所有大于等于1的数都可由1组成.没有1时,最小不幸的数就是1. #include<iostream> ...

  9. Tarjan & LCA 套题题目题解

    刷题之前来几套LCA的末班 对于题目 HDU 2586 How far away 2份在线模板第一份倍增,倍增还是比较好理解的 #include <map> #include <se ...

随机推荐

  1. for in和for of的简单区别

    //for in可以遍历数组和对象,但是for of只能遍历数组,不可以遍历对象 var arr = [1,4,5,6,7,8]; var obj = { name:'za', age:19, say ...

  2. 新东方集团K12公益免费课战役记

    作者:张建鑫, 曾任IBM高级软件架构师, 滴滴高级技术专家, 现任新东方集团高级技术总监 1月31日,集团领导决定由产品技术中心的新东方APP团队牵头做周一到周五的集团公益课, 提供给全国中小学生使 ...

  3. Confluence7.4安装并破解汉化教程

    Confluence是一款由JAVA编写用于企业知识库管理协同软件,多用于构建企业内部WIKI,支持多人协作,共享信息等. 当前系统环境Centos7.9,内存至少2G以上,数据库采用MySQL5.7 ...

  4. 浅谈可持久化Trie与线段树的原理以及实现(带图)

    浅谈可持久化Trie与线段树的原理以及实现 引言 当我们需要保存一个数据结构不同时间的每个版本,最朴素的方法就是每个时间都创建一个独立的数据结构,单独储存. 但是这种方法不仅每次复制新的数据结构需要时 ...

  5. Django——实现最基础的评论功能(只有一级评论)

    我对评论功能的理解: --------(1)数据库建一个评论的表 --------(2)前端建一个提交评论的form表单 --------(3)表单提交评论内容后写入到数据库评论表中 -------- ...

  6. K8S最小硬件配置

  7. Codeforces 1365D Solve The Maze

    ### 题目大意: 在一个 $n * m$ 的矩阵中,有空地.坏人.好人和墙.你可以将空地变成墙来堵住坏人.$(n, m)$为出口,是否存在一个方案使得矩阵中所有好人能够走到出口,而所有坏人不能通过出 ...

  8. Docker(36)- docker run 的流程和原理

    背景 目前项目组上, Docker 用的非常重,所有微服务都是通过 docker 来部署的 所以不能仅仅会命令,还得会一些原理的东西,特此补一篇基础点的,后面再更加深入一些 docker 原理 本篇学 ...

  9. Linux内核学习之工作队列

    Author       : Toney Email         : vip_13031075266@163.com Date          : 2020.12.02 Copyright : ...

  10. AOP联盟通知类型和Spring编写代理半自动

    一.cglib功能更强大 二.Spring核心jar包 三.AOP联盟通知 三.代码实现Spring半自动代理 1.环绕通知的切面 2.bean.xml配置 3.创建bean容器,获取bean,即已经 ...