zoukankan      html  css  js  c++  java
  • 「考试」省选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)分别容斥出来。
    式子是这样的。

    [g[i][j][k]=sumlimits_{e(t,j)}g[i][t][k-1] ]

    [f[i][j][k]=g[i][j][k]-left(sumlimits_{d=1}^{k-1}f[i][j][d]g[j][j][k-d]+sumlimits_{d=1}^{k-1}h[i][j][d]g[i][j][k-d] ight) ]

    [h[i][j][k]=g[i][j][k]-left(sumlimits_{d=1}^{k-1}h[i][j][d]g[i][i][k-d]+sumlimits_{d=1}^{k-1}f[i][j][d]g[j][i][k-d] ight) ]

    注意容斥的时候特判(i==j)的情况。
    然后(f)就是答案数组了。

    T3
    首先发现设(f[i])为行的1的个数的奇偶性,(g[i])为列的。
    那么下一轮有:(a[i][j]=f[i] xor g[j])
    这样我们发现可以交换行列而不改变答案。
    那么我们把矩形分成四块,分别统计答案即可。
    可以发现每次迭代,四块的变化量是一样大的。
    那么我们可以直接模拟这四块,然后用(map)判一下当前矩形是否出现过了即可。
    至于如何求出初始答案。
    直接线段树扫描线即可。

  • 相关阅读:
    (转)C3P0连接池配置和实现详解
    (转)jquery插件Validate的使用
    二叉树和翻转二叉树
    利用@media screen实现网页布局的自适应
    (转)防止SQL注入的五种方法
    java代码规范
    Java泛型-类型擦除
    js中的isNaN()
    (转)sublime 一些常用功能和快捷键
    (转)java中不常见的关键字:strictfp,transient
  • 原文地址:https://www.cnblogs.com/Lrefrain/p/12589517.html
Copyright © 2011-2022 走看看