2023.6.27 闲话
「jijidawang的符号学为什么起步这么早。」但是,符号学是啥啊。
语录
纯悦:你是屎吧。
纯悦:你去屎吧。
纯悦:我要成为内鬼!(指 S2)
纯悦:APJ 这个,很持久啊。
纯悦:我是 0↗
纯悦:你也知道你只会贺啊。
纯悦:别自闭啊,我还要找乐子呢。
纯悦:我老婆只有一个,剩下都是妾。
纯悦:xht 你怎么还卷 ABC 啊。这么简单的 ABC 你还卷,xht。
纯悦:让我来给他们讲状压 DP,插头 DP,各种 DP!所有 DP 全让我讲!
纯悦:所有神给我站一边!Keven_He 我就是帅!
纯悦:你怎么全是闲话,傻逼。
纯悦:(Kaguya)她怎么刚关注我!
纯悦:郭佩奇关注了我!
纯悦:德与行不可兼备。
纯悦:我草,我好牛逼,我怎么认识这么多人。
纯悦:(jijidawang)估计每个人看到你 id 都会想锐评。
K8He 怒 d 喵喵给他关机浪费了他 10min,呃呃 .
STAOI 来了个大神 zifanwang,膜拜!
Akira Complex 自杀了?????? 好像是真的。昨天晚上我九点回去然后过了不到十分钟就有消息。感觉是昨天最大的事。(选自 gtm1514)
ARC111C Too Heavy
首先如果初始状态有不是自己的行李换不出去的肯定无解,那么先排掉这种情况 .
按 \(p_i\) 构成若干个置换环,那么让每个置换环内体重最大的做中转给每个人换,不难发现只需要考虑体重最大的会不会中间操作不了了,但是根据前面的讨论这种情况已经被排除,所以此时一定有解 .
每个非环内体重最大的人都交换了恰一次,于是可以发现这种操作方案肯定是最优的 . 时间复杂度 \(\Theta(n)\),可以通过 .
ARC112C DFS Game
有点麻烦的题目,题面也很容易让人读错 . 思路并不困难,不难想到设计树形 DP,转移类似 Minimax 搜索 .
令 \(dp_u\) 表示先手在 \(u\) 的子树最多获得多少硬币,那么转移就是把儿子 \(v\) 分成三类:
- \(\newcommand{\size}{\operatorname{size}}\size(v)\) 为偶数且 \(dp_v<\size(v)-dp_v\) .
- \(\size(v)\) 为偶数且 \(dp_v\ge\size(v)-dp_v\) .
- \(\size(v)\) 为奇数 .
依此转移即可,注意第三类最后决策,时间复杂度 \(\Theta(n\log n)\),比较精细实现应该可以线性 .
ARC112D Skate
这种东西为啥我总想不到 . 如果 \((x,y)\) 位置是 #
则连边 \(x-y\),于是问题可以改成最少加多少条边使得整张图连通 .
并查集行列分别算连通块数量即可,不算反 Ackermann 函数时间复杂度 \(\Theta(nm)\) .
ARC112E Cigar Box
将终止状态分为三部分,分别是移到左边的,没动过的和移到右边的 .
于是枚举一段递增区间,设其左边有 \(l\) 个数,右边有 \(r\) 个数,则考虑计数移动方案 . 每个数看成一种颜色,那么就是先把 \(m\) 次操作染 \(l+r\) 个颜色,每个颜色都要有至少一个 . 那么就是有标号小球放到无标号盒子(因为合法的盒子顺序肯定只有恰一种)里,这是第二类斯特林数 . 然后还需要考虑哪些操作移到左边哪些移到右边,这个组合数算就行了,注意只有最后一次操作有效,所以剩下的 \(m-l-r\) 次操作随便选就行,综合起来,方案数就是:
直接计算即可,时间复杂度 \(\Theta(n^2)\) 其中假定 \(n,m\) 同阶 .
ARC114C Sequence Scores
考虑依次加入元素以生成序列 \(\{a\}\),那么加入一个元素 \(x\) 使得操作次数增加当且仅当 \(x\) 没有出现过或者 \(x\) 到他上一个出现的位置有一个比它小的 .
不难想到单步容斥改成所有位置都比它大,那么枚举上一个出现的位置可以得到在 \(n\) 处加元素 \(x\) 的方案数:
答案就是
要求 \(g\) 的一行,可以递推处理,时间复杂度 \(\Theta(nm)\),可以通过 .
ARC114E Paper Cutting 2
根据拒绝采样法原理,改成不割矩形、矩形内随便选直线不影响答案 .
那么可以根据期望线性性,考虑计算矩形内每一条和边界平行的线段产生的贡献 . 设矩形上下左右分别有 \(u,d,l,r\) 条线,总共 \(s\) 条 . 不妨令目前考虑左边的第 \(i\) 条线,则选中其他线的概率就是 \(\dfrac{u+d+r+i-1}s\),选中这条线的概率就是:
直接算即可,不算求逆元时间复杂度 \(\Theta(h+w)\) .
ARC115D Odd Degree
流汗 .
对于每个连通块考虑,首先想树咋做,然而叶子确定之后显然可以推出整棵树的连边情况,所以树的答案就是 \(\binom nk\) .
那么如果是任一无向图就先随便整一棵生成树出来,这样非树边随便选后面根据上面的方法构造即可,所以就是 \(2^{m-n+1}\binom nk\) .
合并就是卷积,用背包暴力做就是 \(\Theta(n^2)\),用科技就是 \(O(n\log^2n)\)(大概吧).
ARC116C Multiple Sequences
虽然简单但是还是想记一下 .
首先考虑改成元素不能重复的,枚举本质不同元素个数后乘组合数即可计算答案 .
然后朴素 DP 即可,可以注意到本质不同元素个数肯定不大于 \(\log m\),于是时间复杂度为 \(O(n+m\log^2m)\),可以通过 .
ARC116D I Wanna Win The Game
考虑拆位处理异或,那么令 \(dp_i\) 表示元素和为 \(i\) 时的方案数,枚举最后一位是 1 的个数即可得到转移:
直接计算即可,时间复杂度 \(O(n^2)\) .
ARC116E Spread of Information
首先二分答案,就变成对于一个覆盖半径问至少需要多少点 .
这个问题可以贪心处理,按 DFS 序考虑,如果子树内覆盖不到就选上,可以发现这样肯定最优 .
于是就在 \(\Theta(n\log n)\) 的复杂度内解决了问题 .
ARC117C Tricolor Pyramid
?
把三种颜色标号为 \(0,1,2\),则如果底层的两种颜色为 \(c_1,c_2\),则上层的颜色可以表示为 \(-(c_1+c_2)\bmod 3\) .
那么根据类似杨辉三角的推导可以得到顶层的颜色就是:
其中 \(\{c\}\) 是底层颜色序列 .
那么直接计算即可,组合数需要使用 Lucas 定理计算,时间复杂度 \(\Theta(n\log n)\) .
ARC117D Miracle Tree
?
将点权从小到大排序,让标号排列为 \(\{p\}\),则只需要满足相邻的项的距离限制,也就是 \(E_{p_{i+1}}-E_{p_i}\le\operatorname{dist}(p_i,p_{i+1})\),别的位置可以用三角形不等式调整得到满足限制 .
关于限制,显然全部取等是可以的,于是可以导出的是 \(\displaystyle E_{p_k}=1+\sum_{i=1}^{k-1}\operatorname{dist}(p_i,p_{i+1})\) .
那么问题就变成了找到排列 \(\{p\}\) 使得 \(\displaystyle\sum_{i=1}^{n-1}\operatorname{dist}(p_i,p_{i+1})\) 最小了,看起来比较经典 .
首先加上 \(\operatorname{dist}(p_n,p_1)\) 之后按 DFS 序选就可以取到下界 \(2(n-1)\),那么只需要最大化 \(\operatorname{dist}(p_n,p_1)\),取直径端点即可 .
时间复杂度 \(\Theta(n)\) .
具体有一些实现技巧,可以看 Creater_157 大神的博客 .
ARC118D Hamiltonian Cycle
考虑把 \([0,p)\) 每个数写成 \(a^i\cdot b^j\bmod p\) 的形式 .
具体地,令 \(n=\operatorname{ord}_p(a),\ m=\underset{j}{\mathop{\text{arg min}}}\{b^j\in\mathcal H\}\),其中 \(\mathcal H=\{a^i\mid i\in\mathbb Z\}\) . 则构造一个 \(n\times m\) 的矩形 \(G_{a,b}\),第 \(i\) 行第 \(j\) 列放 \(a^i\cdot b^j\bmod p\) .
结论:对于每个 \(x\in G_{a,b}\),都有唯一的 \(i\in[0,n),\,j\in[0,m)\),使得 \(x=a^i\cdot b^j\bmod p\) .
存在性用带余除法即可简单证明,考虑证明每个数出现次数不超过 \(1\):
假设存在 \(i_1,i_2,j_1,j_2\)(范围同上)满足 \(a^{i_1}b^{j_1}\equiv a^{i_2}b^{j_2}\pmod p\) .
不妨令 \(j_1\le j_2\),则 \(a^{i_1-i_2}\equiv b^{j_2-j_1}\pmod p\),可以发现 \(b^{j_2-j_1}\in\mathcal H\),根据 \(m\) 的定义可以知道 \(j_2-j_1=0\),也就是 \(j_2=j_1\),那么就可以得到 \(a^{i_1}=a^{i_2}\),因为 \(i_1,i_2<n\),所以肯定有 \(i_1=i_2\) . 由此就证明了每个数出现次数不超过 \(1\) .
这样的话,如果 \(nm\neq p-1\) 无解,否则考虑构造一组解 . 也就是考虑在 \(G_{a,b}\) 中构造一条哈密顿回路 .
首先特判 \(n=1\) 或 \(m=1\) . 那么剩下的情况 \(p\) 肯定是奇数,从而根据 \(nm=p-1\) 可以得到 \(nm\) 中至少有一个偶数 . 后面的构造就不困难了,放一个官方题解的图,其余可以看官方题解 .
以下是博客签名,正文无关
本文来自博客园,作者:Jijidawang,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/17509885.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ