zoukankan      html  css  js  c++  java
  • Hitachi Programming Contest 2020 E Odd Sum Rectangle

    当自己改题的时候发现场上猜的一个结论二维差分一下就是正解的时候非常崩溃 TAT


    先把原来的矩阵 (a_{i,j}) 拓展成 (2^N)(2^M) 列,其中第 (0) 行和第 (0) 列的数全部都是 (0),然后对其二维前缀和得到矩阵 (b_{i,j})

    先考虑答案上界,枚举 (0 leq i < j < 2^N),设 (c_k = b_{i,k} mathrm{xor} b_{j,k}),那么所有上边界在 (i+1) 行、下边界在 (j) 行的奇矩阵数量是 ((sumlimits_{p=0}^{2^M-1} [c_p = 0]) imes (sumlimits_{p=0}^{2^M-1} [c_p = 1]) leq frac{2^{2M}}{4}),故一个答案上界是 (frac{2^N(2^N-1)}{2} imes frac{2^{2M}}{4})

    看到矩阵大小是二的整数幂果断地往位运算上考虑,接下来给出一个构造:(b_{i,j} = mathrm{popcount}(i mathrm{and} j) mod 2) 并证明其能达到答案上界。


    先考虑 (N=M) 的情况,此时答案上界是 (frac{8^N(2^N-1)}{8})

    左上边界为 ((i+1,k+1))、右下边界为 ((j,l)) 的矩形的奇偶性为 (b_{i,k} mathrm{xor} b_{i,l} mathrm{xor} b_{j,k} mathrm{xor} b_{j,l})。因为两个数的异或的 (mathrm{popcount}) 的奇偶性和两个数的 (mathrm{popcount}) 的和的奇偶性是相同的,故其等价于 (mathrm{popcount}((i mathrm{and} k) mathrm{xor} (i mathrm{and} l) mathrm{xor} (j mathrm{and} k) mathrm{xor} (j mathrm{and} l)) mod 2)

    先忽略 (i < j,k < l) 的限制,因为答案为 (1)(i eq j,k eq l),所以只需要将忽略该条件之后的计算结果除 (4) 即可得到有这个限制时的答案。

    全部都是位运算,按位考虑。每一位 (i,j,k,l) 都有 (0/1) 两种选择,其中只有 (i,j) 在这一位恰有一个为 (1)(k,l) 在这一位恰有一个为 (1)((i mathrm{and} k) mathrm{xor} (i mathrm{and} l) mathrm{xor} (j mathrm{and} k) mathrm{xor} (j mathrm{and} l)) 在这一位的值为 (1),否则为 (0),故使这位为 (1) 的方案有 (4) 种。

    现在可以看作这样的问题:有 (N) 位,每位取 (1)(4) 的贡献、取 (0)(12) 的贡献,问所有方案中 位数之和为奇数的方案的 所有位的贡献乘积 的和。

    枚举有多少位取到 (1),可得 (ans = sumlimits_{i=0}^N [2 mid i] inom{N}{i} 4^i 12^{N-i})。注意到 ([2 mid i] = frac{1-(-1)^i}{2}),代入可得

    (egin{align*} ans &= sumlimits_{i=0}^N frac{1-(-1)^i}{2} inom{N}{i} 4^i 12^{N-i} \ &= frac{sumlimits_{i=0}^Ninom{N}{i} 4^i12^{N-i} - sumlimits_{i=0}^Ninom{N}{i} (-4)^i12^{N-i}}{2} \ &= frac{16^N-8^N}{2} = frac{8^N(2^N-1)}{2} end{align*})

    不要忘了中间忽略了一个限制,答案要乘上 (frac{1}{4}),所以答案为 (frac{8^N(2^N-1)}{8}) 恰为上界。


    (N eq M) 时不妨假设 (N < M)。此时在上面的证明中 (k,l) 两个数还有 (M-N) 位没有填入,而 (i,j < 2^N) 所以这 (M-N) 位如何填入不会影响对应矩阵的奇偶性。所以答案就是 (frac{8^N(2^N-1)}{8} imes 4^{M-N} = frac{2^N(2^N-1)}{2} imes frac{2^{2M}}{4}) 与上界一致。QED

    故构造 (b_{i,j}) 后二维差分即可得到答案。

  • 相关阅读:
    浅谈UML中类之间的五种关系及其在代码中的表现形式
    Understanding Liskov Substitution
    WPF捕获事件即使这个事件被标记为Handled
    [三层架构+WCF]三层架构+WCF实现TaskVision
    [.NET 三层架构(ADO.NET)+Web Service+多语言]WinForm三层架构重新实现TaskVision,外加WebService提供数据和多语言
    WPF拖动总结
    Understanding Single Responsibility and Interface Segregation
    [WinForm ADO.NET实现TaskVision][SQL Server 2008][winform datagridview总结][自定义Custom控件]Winform DataGridView各种现有column及自定义column+Winform自定义控件
    经尉迟方兄提点,终于明白为什么不是一个简单的26进制程序了
    一个有关windows服务的安装问题
  • 原文地址:https://www.cnblogs.com/Itst/p/12660534.html
Copyright © 2011-2022 走看看