NOI 2021 部分题目题解
最近几天复盘了一下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\) 是确定的,那么:
a_i & 1\\
1 & 0
\end{bmatrix}\]
从右往左算的积的 \((0,0)\) 位和 \((0,1)\) 位就是答案。
考虑 W 操作的影响,你发现:
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}
\]
所以就相当于在后面增加一个
1 & 1\\
0 & 1
\end{bmatrix}
\]
的矩阵。
考虑 E 操作,不难发现两种情况其实操作下来等价,所以我们只需要考虑第二种情况。实际上就是增加:
1 & 1\\
1 & 0
\end{bmatrix}
\begin{bmatrix}
1 & 1\\
1 & 0
\end{bmatrix}
\begin{bmatrix}
1 & -1\\
0 & 1
\end{bmatrix}
\]
又因为矩阵有结合律,所以就相当于增加:
2 & -1\\
1 & 0
\end{bmatrix}
\]
所以用平衡树维护就好了。需要卡常的话可以把矩阵乘法那里手写而非循环形式。
NOI 2021 部分题目题解的更多相关文章
- [NOI 2021] 轻重边 题解
提供一种和不太一样的树剖解法(一下考场就会做了qwq),尽量详细讲解. 思路 设重边为黑色,轻边为白色. 首先,先将边的染色转化为点的染色(即将 \(u\) 节点连向父节点的边的颜色转化为 \(u\) ...
- ZROI 部分题目题解
ZROI 部分题目题解 335 首先发现一个性质: 对于最短的边而言,所有点的路径如果经过了这条边,那么路径的权值就是这条边的边权(废话) 那么我们把最短的边拎出来,可以发现,博物馆确定时,每个点按照 ...
- PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)
PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++: 欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...
- 2021.07.17 题解 CF1385E Directing Edges(拓扑排序)
2021.07.17 题解 CF1385E Directing Edges(拓扑排序) CF1385E Directing Edges - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) ...
- 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 ...
- LuoguB2001 入门测试题目 题解
Update \(\texttt{2021.7.3}\) 经测试,本题 \(a,b\) 范围在 long long,对代码进行了修改,并修改一些笔误,更新了数据范围. \(\texttt{2021.7 ...
- Diary -「NOI 2021」酱油记
雨幕浓稠 远近一白 是水雾弥漫的天 还是泡沫撑起的海 雨真大呢. 前几天去 ZH 中学集训没啥好记的,就从会合日开始叭. [Day -1] 逃出 ZH,掉入梦麟.( 高中的同学们忘记带 ...
- chd校内选拔赛题目+题解
题目链接 A. Currency System in Geraldion 有1时,所有大于等于1的数都可由1组成.没有1时,最小不幸的数就是1. #include<iostream> ...
- Tarjan & LCA 套题题目题解
刷题之前来几套LCA的末班 对于题目 HDU 2586 How far away 2份在线模板第一份倍增,倍增还是比较好理解的 #include <map> #include <se ...
随机推荐
- for in和for of的简单区别
//for in可以遍历数组和对象,但是for of只能遍历数组,不可以遍历对象 var arr = [1,4,5,6,7,8]; var obj = { name:'za', age:19, say ...
- 新东方集团K12公益免费课战役记
作者:张建鑫, 曾任IBM高级软件架构师, 滴滴高级技术专家, 现任新东方集团高级技术总监 1月31日,集团领导决定由产品技术中心的新东方APP团队牵头做周一到周五的集团公益课, 提供给全国中小学生使 ...
- Confluence7.4安装并破解汉化教程
Confluence是一款由JAVA编写用于企业知识库管理协同软件,多用于构建企业内部WIKI,支持多人协作,共享信息等. 当前系统环境Centos7.9,内存至少2G以上,数据库采用MySQL5.7 ...
- 浅谈可持久化Trie与线段树的原理以及实现(带图)
浅谈可持久化Trie与线段树的原理以及实现 引言 当我们需要保存一个数据结构不同时间的每个版本,最朴素的方法就是每个时间都创建一个独立的数据结构,单独储存. 但是这种方法不仅每次复制新的数据结构需要时 ...
- Django——实现最基础的评论功能(只有一级评论)
我对评论功能的理解: --------(1)数据库建一个评论的表 --------(2)前端建一个提交评论的form表单 --------(3)表单提交评论内容后写入到数据库评论表中 -------- ...
- K8S最小硬件配置
- Codeforces 1365D Solve The Maze
### 题目大意: 在一个 $n * m$ 的矩阵中,有空地.坏人.好人和墙.你可以将空地变成墙来堵住坏人.$(n, m)$为出口,是否存在一个方案使得矩阵中所有好人能够走到出口,而所有坏人不能通过出 ...
- Docker(36)- docker run 的流程和原理
背景 目前项目组上, Docker 用的非常重,所有微服务都是通过 docker 来部署的 所以不能仅仅会命令,还得会一些原理的东西,特此补一篇基础点的,后面再更加深入一些 docker 原理 本篇学 ...
- Linux内核学习之工作队列
Author : Toney Email : vip_13031075266@163.com Date : 2020.12.02 Copyright : ...
- AOP联盟通知类型和Spring编写代理半自动
一.cglib功能更强大 二.Spring核心jar包 三.AOP联盟通知 三.代码实现Spring半自动代理 1.环绕通知的切面 2.bean.xml配置 3.创建bean容器,获取bean,即已经 ...