1 条题解

  • 0
    @ 2025-6-6 20:07:49

    不难发现,一般情况下我们只需要确定第一列的染色方式,那么全图的染色方式就会是固定的。现在第一列有 mm 个,则答案应该为 2m2^m。这样显然是不对的。因为当我们将图翻转,变成 mmnn 列,则答案变为 2n2^n,因为 2n2m2^n \not = 2 ^ m,所以答案错误。

    现在我们考虑一种特殊情况,即第一列是红蓝相间排列的,这时只要别的列也是红蓝相间排列,都可以满足题目要求。而红蓝相间排列有两种,即列首为红或列首为蓝。对于每一列,我们有 22 种方案,因此总共为 2n2^n 种。因此最后的答案就是 2m2+2n2^m - 2 + 2^n

    然后我们来证明为什么第一列染色方式可以将全图固定。对于一种染色方式,我们如果可以找到两个相邻的且颜色一样的格子,则对于下一列,这两个格子的颜色必定反转。且这两个格子的颜色可以从上一列往旁边延伸固定。应此一定会固定全图颜色。若没有相邻的且颜色一样的格子,则一定是红蓝相间的,下一列也一定是红蓝相间的。

    import sys
    
    Mod = 10**9 + 7
    
    def solve():
        data = sys.stdin.readline().split()
        n = int(data[0])
        m = int(data[1])
    
        pow2_n = pow(2, n, Mod)
        pow2_m = pow(2, m, Mod)
    
        # 计算结果并确保非负
        res = (pow2_n + pow2_m - 2) % Mod
        res = (res + Mod) % Mod  # 确保结果非负
        print(res)
    
    def main():
        T = int(sys.stdin.readline().strip())
        for _ in range(T):
            solve()
    
    if __name__ == '__main__':
        main()
    
    • 1

    信息

    ID
    980
    时间
    1000ms
    内存
    128MiB
    难度
    1
    标签
    (无)
    递交数
    109
    已通过
    8
    上传者