1 条题解
-
0
不难发现,一般情况下我们只需要确定第一列的染色方式,那么全图的染色方式就会是固定的。现在第一列有 个,则答案应该为 。这样显然是不对的。因为当我们将图翻转,变成 行 列,则答案变为 ,因为 ,所以答案错误。
现在我们考虑一种特殊情况,即第一列是红蓝相间排列的,这时只要别的列也是红蓝相间排列,都可以满足题目要求。而红蓝相间排列有两种,即列首为红或列首为蓝。对于每一列,我们有 种方案,因此总共为 种。因此最后的答案就是 。
然后我们来证明为什么第一列染色方式可以将全图固定。对于一种染色方式,我们如果可以找到两个相邻的且颜色一样的格子,则对于下一列,这两个格子的颜色必定反转。且这两个格子的颜色可以从上一列往旁边延伸固定。应此一定会固定全图颜色。若没有相邻的且颜色一样的格子,则一定是红蓝相间的,下一列也一定是红蓝相间的。
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
- 上传者