暑假集训CSP提高模拟4 & 暑假集训CSP提高模拟5

暑假集训CSP提高模拟4 & 暑假集训CSP提高模拟5

模拟赛 4

超越一切,策略喜人。

带来终结,结论脱尘。

构造之力,充满全身。

最后一击,码力成神。

  1. T1 White and Black

    显然策略,考虑最浅的节点不符合一定会点,如果子节点是白也一定会点回去,只有是黑的时候不动。

    是黑的贡献可以先减去,再在算到它时加上。

    发现这样和深度也无关了,只需要统计有几个黑色的子节点即可。

  2. T2 White and White

    逆天题。

    考虑直接暴力有 \(n^2k\)\(nkp\) 两种。

    先考虑 \(nkp\),就是枚举最后一段的余数,套个树状数组可以优化到 \(nk\log p\),原题可过。赛时因 wang54321 优秀大常数做法让学长一怒之下 \(1500 ms \to 500 ms\) 将所有树状数组卡了。

    \(n^2k\) 的暴力更显然,设 \(dp_{i,j}\) 表示前 \(i\) 个分了 \(j\) 块,\(s_i\) 表示前缀和。考虑优化。

    发现关键性质 \(dp_{i,j}\equiv s_i \pmod p\),所以所有的转移决策对应方程都是同于的,所以 \(dp_{k_1,j-1}>dp{k_2,j-1}\)\(k_2\) 一定不劣于 \(k_1\)

    可以直接 \(O(nk)\) 作了。

  3. Black and Black

    简单构造(wkh2008:这叫简单构造)。

    考虑先从 \(1\) 填到 \(n\)

    \(sum>0\),若有解,一定有前缀和是正或后缀和是负的点。

    因为值只有 \(1,-1\) 所以一定有前缀和为 \(1\) 或后缀和为 \(-1\) 的点。

    找到以后直接前后缀加减即可。

    \(sum<0\) 类似即可。

  4. Black and White

    动态点分治板子,码量巨大。

    我太菜了,有点码量就写不出来……

    其实可以直接用线段树维护,考虑两个点集交的直径的端点一定是这两个点集所包含的 \(4\) 个直径端点中的两个。

    于是可以合并了。

模拟赛 5

听好了:

听好了听好了,听好了听听好了。每个听好了都听好了听好了,为听好了带来听好了的听好了。

听好了所听好了的听好了都听好了,听好了所听好了的听好了都听好了听好了的听好了。

听好了(听好了听好了)

听听听听听听听听听听听听听听听听好好好好好好好好了了

听好,好好听好。

好听,听听了好。

  1. T1 简单的序列(sequence)

    从大到小贪心即可。

  2. T2 简单的字符串(string)

    什么做法都可以过。

    可以简单 \(n^2 \left\vert s \right\vert\)bitset 就可过了。

    也可以显然做到 \(O(n \left\vert s \right\vert)\)

  3. T3 简单的博弈(tree)

    首先需要知道 \(sg\)

    其次就是板子。

    考虑从儿子转移,因为也需要将直接儿子断掉,所以 \(sg\)\(+1\),然后异或起来就行了

  4. T4 困难的图论(graph)

    是真困难。

    显然考虑到建虚点,从节点到虚点为 \(0\),虚点到节点为 \(1\),考虑直接从虚点开始跑最短路。

    但这样会有问题:当 \(a\to b\) 最短不经过 \(a\) 的虚点是,距离会多算一。

    对每个虚点建出最短路 \(DAG\),考虑当 \(a\)\(b\) 祖先时 \(a\to b\) 贡献会加一。

    期望是 \(O(n^2)\) 的。

    考虑 bitset 加速,发现无法开不定长的,要是开定长的就是 \(O(\frac{n^2*k}{w})\) 不如不干。

    但我们可以手写,用 unsigned long long 压起来跑多遍就行了。

posted @ 2024-07-25 06:39  xrlong  阅读(10)  评论(1编辑  收藏  举报