做题记录 26.3.30

\(\textcolor{purple}\odot\) AT_agc007_c [AGC007C] Pushing Balls

\(2n\) 段距离,相对称的两段选到的概率显然相同,从而可以令两者的长度平均,此时每一段长度都是 \(d+\frac{2n-1}2\times x\),因此考虑计算每段长度都是 \(1\) 的情况的答案,最终答案乘以 \(d+\frac{2n-1}2\times x\) 即可

此时相当于 \(2n\)\(1\),每次选择一个计入贡献,若选择的在边缘则删去边上两个,否则将它和边上两个并起来,求期望贡献

显然又可以进行平均操作,变化后得到 \(2n-2\) 段平均长度为 \(\frac{2n(2n-2)+2(2n-2)}{2n(2n-2)}=\frac{n+1}n\)

\(d_i\) 表示 \(i\) 次操作后的平均长度,则 \(d_0=1\)\(d_i=\frac{n-i+1+1}{n-i+1}\times d_{i-1}=\frac{n+1}{n-i+1}\)

答案为 \((d+\frac{2n-1}2\times x)\times \sum_{i=0}^{n-1} d_i\)

时间复杂度 \(O(n)\)

代码

参考

\(\textcolor{purple}\odot\) AT_agc012_c [AGC012C] Tautonym Puzzle

先放 \(1\sim 100\),后面部分每个上升子序列都可与前面部分组成合法子序列,问题转化为构造恰好 \(n\) 个上升子序列的数列

先放置 \(2,4,\cdots,2\times (1+\log_2(n))\),同时从 \(n\) 中减去这部分内部的上升子序列数量,之后从大到小尝试放奇数即可

代码

参考

\(\textcolor{purple}\odot\) AT_agc012_d [AGC012D] Colorful Balls

\(a,b\) 位置可以交换,\(b,c\) 可以交换,则等价于 \(a,c\) 也可交换,从而在可交换的位置之间连边,每个连通块独立且连通块内可以互换,每个连通块分别统计答案是容易的,问题转化为快速求出连通情况

同种颜色中,每个分别尝试与权值最小的连边

不同种颜色中,每个尝试与自己颜色不同的当中权值最小的连边,后者显然只有两种情况

容易做到 \(O(n\alpha(n))\)\(O(n)\)

代码

参考

\(\textcolor{purple}\odot\) AT_agc013_c [AGC013C] Ants on a Circle

显然 \(n\) 个元素在环上的相对位置不变,假定两个元素相遇后互相穿越则容易得到最终 \(n\) 个位置的集合,问题转化为为 \(n\) 个位置编号,可以计算每个位置和 \(1\) 号相交的次数从而算出一号元素最终编号

容易做到 \(O(n\log n)\)

代码

参考

posted @ 2026-03-31 07:29  Hstry  阅读(7)  评论(0)    收藏  举报