暑假集训CSP提高模拟4 & 暑假集训CSP提高模拟5
暑假集训CSP提高模拟4 & 暑假集训CSP提高模拟5
模拟赛 4
超越一切,策略喜人。
带来终结,结论脱尘。
构造之力,充满全身。
最后一击,码力成神。
-
T1 White and Black
显然策略,考虑最浅的节点不符合一定会点,如果子节点是白也一定会点回去,只有是黑的时候不动。
是黑的贡献可以先减去,再在算到它时加上。
发现这样和深度也无关了,只需要统计有几个黑色的子节点即可。
-
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)\) 作了。
-
Black and Black
简单构造(wkh2008:这叫简单构造)。
考虑先从 \(1\) 填到 \(n\)。
若 \(sum>0\),若有解,一定有前缀和是正或后缀和是负的点。
因为值只有 \(1,-1\) 所以一定有前缀和为 \(1\) 或后缀和为 \(-1\) 的点。
找到以后直接前后缀加减即可。
\(sum<0\) 类似即可。
-
Black and White
动态点分治板子,码量巨大。
我太菜了,有点码量就写不出来……
其实可以直接用线段树维护,考虑两个点集交的直径的端点一定是这两个点集所包含的 \(4\) 个直径端点中的两个。
于是可以合并了。
模拟赛 5
听好了:
听好了听好了,听好了听听好了。每个听好了都听好了听好了,为听好了带来听好了的听好了。
听好了所听好了的听好了都听好了,听好了所听好了的听好了都听好了听好了的听好了。
听好了(听好了听好了)
听听听听听听听听听听听听听听听听好好好好好好好好了了
听好,好好听好。
好听,听听了好。
-
T1 简单的序列(sequence)
从大到小贪心即可。
-
T2 简单的字符串(string)
什么做法都可以过。
可以简单 \(n^2 \left\vert s \right\vert\) 套
bitset
就可过了。也可以显然做到 \(O(n \left\vert s \right\vert)\)
-
T3 简单的博弈(tree)
首先需要知道 \(sg\)。
其次就是板子。
考虑从儿子转移,因为也需要将直接儿子断掉,所以 \(sg\) 要 \(+1\),然后异或起来就行了
-
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
压起来跑多遍就行了。
本文来自博客园,作者:xrlong,转载请注明原文链接:https://www.cnblogs.com/xrlong/p/18322134