【学习笔记】AGC041
Domino Quality
- atcoder简洁题面好评
做构造题要有耐心- 好阴间的构造题啊。。。
- 设 ( A , Q ) (A,Q) (A,Q)表示每行每列数量为 Q Q Q的 A × A A\times A A×A大小的矩阵
- 如果我们知道 ( A , Q ) (A,Q) (A,Q)以及 ( B , Q ) (B,Q) (B,Q)的构造方法,我们就能构造出 ( A + B , Q ) (A+B,Q) (A+B,Q)
- 具体做法是把两个矩阵分别放在左上角和右下角,其余为空
- 显然考虑
Q
=
3
Q=3
Q=3的情况
并不显然 - 显然可以把 ( 4 , 3 ) , ( 5 , 3 ) , ( 6 , 3 ) , ( 7 , 3 ) (4,3),(5,3),(6,3),(7,3) (4,3),(5,3),(6,3),(7,3)全部暴搜出来
- 显然可以打表
反正这题考点也不在这 诶n=7怎么暴力跑不出来呀诶加了玄学剪枝怎么就跑得飞快呀代码一堆打表非常丑陋甚至输出也很丑陋
Unique Path
- 美妙的构造题
虽然我还是做不出来 - 显然删去所有边权为 1 1 1的边,对于每个连通块内的点两两有唯一简单路径
- 先不忙对每个连通块缩点,首先我们从每个连通块中选取一个点,然后把它们连成一个环,这样对于不在同一个连通块内的点有至少两条简单路径
- 设连通块数目为 k k k(上述构造恰连了 k k k条边,构成一颗基环树),那么跨连通块边的数目不会超过 k ( k − 1 ) 2 \frac{k(k-1)}{2} 2k(k−1),否则一个连通块不能保持其独立性
- 因此我们只要判断 m m m的大小是否在范围内即可。
- 复杂度 O ( n ) O(n) O(n)。
- 总结:考虑答案的上下界
Wide Swap
兔兔的题解- 考虑一个好的问题转化
- 设 Q [ i ] Q[i] Q[i]表示 i i i在原序列中的位置
- 那么交换 Q [ i ] Q[i] Q[i]和 Q [ i + 1 ] Q[i+1] Q[i+1]的条件是 ∣ Q [ i ] − Q [ i + 1 ] ∣ ≥ K |Q[i]-Q[i+1]|\ge K ∣Q[i]−Q[i+1]∣≥K
- 如果 i < j i<j i<j, ∣ Q [ i ] − Q [ j ] ∣ < K |Q[i]-Q[j]|<K ∣Q[i]−Q[j]∣<K那么 Q [ i ] Q[i] Q[i]和 Q [ j ] Q[j] Q[j]的相对位置关系不会发生改变,换句话说 Q [ i ] Q[i] Q[i]永远在 Q [ j ] Q[j] Q[j]之前
- 那么我们让 Q [ i ] → Q [ j ] Q[i]\to Q[j] Q[i]→Q[j]这样跑出来的拓扑序一定是满足限制的
- 同时我们要让 P P P的字典序最小,转化成 1 1 1在 Q Q Q中最靠前,在 1 1 1最靠前的前提下让 2 2 2最靠前
- 这是一个经典问题
不要再经典了我都wa过一遍了可以建反图跑最大拓扑序解决 - 可以按编号从小到大考虑 Q [ i ] Q[i] Q[i],我们发现只要找到 Q [ i ] Q[i] Q[i]的前驱编号最大和后继编号最大连边即可。
- 复杂度 O ( n log n ) O(n\log n) O(nlogn)
Nondivisible Prefix Sums
- Hint1:所有元素之和不能被
P
P
P整除
显然 - Hint2:众数出现次数不超过 n 2 \frac{n}{2} 2n的序列合法(可以倒着考虑
- Hint3:有一个巧妙的转化。设众数为 x x x,将所有元素乘 x − 1 x^{-1} x−1,那么前缀和也会乘 x − 1 x^{-1} x−1
- Hint4:
巧妙的观察注意到每跨过 P P P都会消耗至少一个不为 1 1 1的数字 - 那么不为 1 1 1的数字至少有 ∑ i = 1 n y i P \frac{\sum_{i=1}^ny_i}{P} P∑i=1nyi个
- 考虑构造方案以证明其等价性
- 考虑每次在末尾加上当前剩余数量最多的 x x x
- 若前缀和是 P P P的倍数,那么加入另一个数 y y y,否则加入 x x x
- 事实上,如果上述构造不合法的话,那么就会剩一堆相同的数,同时这些剩下的数 一定都是 1 1 1
- 问题在于,初始局面中众数是 1 1 1,如果众数改变的话,那么任何时刻众数和次众数的数量相差都不会超过 1 1 1,最后会剩一个数,又因为 P P P不整除 ∑ y i \sum y_i ∑yi,所以最后这个数一定放得下
- 因此任何操作时刻,众数都是 1 1 1,并且最后剩了一堆 1 1 1放不下
- 不妨把我们构造的序列写出来,一定是写了一堆 1 1 1,然后写一个不为 1 1 1的数字
- 这样不为 1 1 1的数字恰好写了 ∑ i = 1 n y i P − 1 \frac{\sum_{i=1}^ny_i}{P}-1 P∑i=1nyi−1个,那么我们还会剩下不为 1 1 1的数字,就不满足全剩 1 1 1的假设了
雀实有点绕呵呵- 把式子魔改一下,设众数出现次数为 k k k:
- ∑ i = 1 n ( P − y i ) [ y i ≠ 1 ] + P − 1 ≥ k \sum_{i=1}^n(P-y_i)[y_i\ne 1]+P-1\ge k ∑i=1n(P−yi)[yi=1]+P−1≥k
- 考虑总方案数 ( P − 1 ) n (P-1)^n (P−1)n减去不合法的方案数
- P ∣ ∑ i = 1 n y i P|\sum_{i=1}^ny_i P∣∑i=1nyi的情况可以递推
- 设 d p [ i ] [ j ] dp[i][j] dp[i][j]表示考虑前 i i i个数, ∑ ( P − y i ) = j \sum (P-y_i)=j ∑(P−yi)=j的方案数
- 答案是 ∑ k ∑ s u m [ k ≥ s u m + P ] [ k ≠ s u m ] ( n k ) ( p − 1 ) d p [ n − k ] [ s u m ] \sum_{k}\sum_{sum}[k\ge sum+P][k\ne sum]\binom{n}{k}(p-1)dp[n-k][sum] ∑k∑sum[k≥sum+P][k=sum](kn)(p−1)dp[n−k][sum]
- 复杂度 O ( n 2 ) O(n^2) O(n2)
__EOF__

本文作者:仰望星空的蚂蚁
本文链接:https://www.cnblogs.com/cqbzly/p/17530112.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/cqbzly/p/17530112.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
2021-07-25 【题解】ABC 211