20230924NOIP训练赛
20230924NOIP训练赛
时间安排
8:00-9:10 写T1
9:10-10:00 写T2暴力
10:00-11:50 写T3
11:50-12:00 检查之后交题
总结
T3想的时间太长了,导致T4没时间写和想了。
题解
T1
对于每个点跑一遍最短路建出新图,然后再跑一遍最短路。
T2
把问题转化为一个 \(n\) 行 \(m\) 列的矩阵,设 \(dp_{i,j,k}\) 表示考虑了前 \(i\) 列 \(j\) 了,当前前 \(i\) 列中有 \(j\) 个右区间还没有被满足,还有 \(k\) 列没有选 \(1\) 的方案数。可以通过 \(i\) 和 \(j\) 算出 \(k\),时间复杂度优化到 \(O(nm)\)。
T3
建一颗动态开点的值域线段树,线段树维护\(l\)到\(r\)之间被加入的数中二进制下一的个数为奇数的数的个数,同时维护答案。\([1,x]\) 二进制下一的个数为奇数的数的个数:\(x/2+(x\%2||popcount(x)%2)\)。
T4
假设一个人最终占据了\(x\)个点,那么,方案数其实就是 \(C_n^x\)。占据某个固定点对的方案数是 \(C_{n-2}^{x-2}\)。所以,占据某个点对的概率是 \(\frac{C_{n-2}^{x-2}}{C_n^x}\) 。使用点分治计算出有多少对点的距离在 \(Dis\)集合内即可。