「考试」省选56
Posted lrefrain
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「考试」省选56相关的知识,希望对你有一定的参考价值。
直接全都WA爆了。
T1
博弈论模型,其实就是转化成(xor)和为(0)。
我们考虑朴素的(dp),(dp[i][j][k])设为前(i)个元素,去掉的元素个数(mod d)为(j),(xor)和为(k)的方案。
暴力转移即可。
考虑最终答案是(dp[n][0][0])
我们降序排序({a})
那么如果(upbit(a_i)=2^j),说明转移过来的(k)必然是小于(2^{j+1})的。
这样我们转移的时候就可以指转移(2^{j+1})个。
那么复杂度就是(O(dsumlimits_{i=1}^{n}a_i))
T2
我们考虑设:
(f[i][j][k])为中途不经过(i,j),以(i)为起点(j)为终点走了(k)步的方案数。
(g[i][j][k])为以(i)为起点(j)为终点走了(k)步的方案数。
(h[i][j][k])为中途不经过(i,j),以(i)为起点(i)为终点走了(k)步的方案数。
然后我们发现(g)可以直接暴力算,(f)和(h)都可以由(f,g,h)分别容斥出来。
式子是这样的。
注意容斥的时候特判(i==j)的情况。
然后(f)就是答案数组了。
T3
首先发现设(f[i])为行的1的个数的奇偶性,(g[i])为列的。
那么下一轮有:(a[i][j]=f[i] xor g[j])
这样我们发现可以交换行列而不改变答案。
那么我们把矩形分成四块,分别统计答案即可。
可以发现每次迭代,四块的变化量是一样大的。
那么我们可以直接模拟这四块,然后用(map)判一下当前矩形是否出现过了即可。
至于如何求出初始答案。
直接线段树扫描线即可。
以上是关于「考试」省选56的主要内容,如果未能解决你的问题,请参考以下文章