zoukankan      html  css  js  c++  java
  • CF1270I Xor on Figures

    CF1270I [* god]

    给定一个大小为 (2^k imes 2^k) 的矩阵 (A),给定点集 (S)({(x_i,y_i)}),定义一次操作为选定 (p,q,w) 然后给所有 (A[(x_i+p)mod 2^k][(y_i+q)mod 2^k]) 异或上 (w)

    求最少操作多少次使得矩阵归 (0)(kle 9,|S|le 99)(|S|) 为奇数。

    Solution

    神仙题。

    我们重新定义矩阵乘法为:

    (A imes B=C)(C[x][y]=igoplus_{i=0}^{2^k-1}igoplus_{j=0}^{2^k-1} a[i][j] imes b[(i-x)mod 2^k][(j-y)mod 2^k])

    同时定义矩阵 (F)(F[x_i][y_i]=1)

    不难发现一组 (p,q) 只会操作一次。

    不难发现我们的目标变为找到一组矩阵 (Z) 使得 (F imes Z=A),且 (Z) 中非 (0) 元素尽可能少。

    在此运算规则下,仍然存在逆元即 (I[0][0]=1)

    考虑 (F^{-1}) 如何得到,我们可以证明他即为 (F^{2^k-1})

    考虑 (F^{2}),只有 (F[2x_imod 2^k][2y_imod 2^k]) 可能存在值,因为 (F[x_i+x_j][y_i+y_j]) 会被 (i+j)(j+i) 异或两次。

    所以不难发现 (F^{2^k}) 只有 (F[0][0]) 可能为 (1)

    又因为初始只有奇数个 (1),所以平方之后也会有奇数个 (1),所以 (F[0][0]=1)

    所以 (F imes Z=A),即 (Z=A imes F^{2^k-1}=A imes prod_{i=0}^{k-1} F^{2^i})

    目前一次乘法的复杂度为 (mathcal O((4^k)^2)),但是由于 (F^{i}) 中至多只有 (t)(1),所以其实是可以做到 (mathcal O(4^k imes t)) 的。

    综上,本题可以做到 (mathcal O(ktcdot 4^k))

  • 相关阅读:
    Code Review 五问五答
    JavaScript 10分钟入门
    swagger editor使用
    Tyk API网关介绍及安装说明
    Castle 多继承选择
    线程信息的获取和设置
    s3 api接口的调用
    在Hadoop集群上的HBase配置
    OpenStack 单元测试
    在Hadoop集群上的Hive配置
  • 原文地址:https://www.cnblogs.com/Soulist/p/13669053.html
Copyright © 2011-2022 走看看