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\)集合内即可。

posted @ 2023-09-24 21:51  RYANGSJ  阅读(15)  评论(0编辑  收藏  举报