L:
题意:给定一个n*m的网格,每个初始的网格有一个高度 ,每个a[ i ] 在[ l , r ]的区间里;
两种操作:
1,相邻方块高度+1
2 . 一个方块的高度+2
求使得若干次操作之后网格所有点到达同一高度的初始网格数量。
解法:考虑最初的网格有奇数有偶数,通过操作2可以把同为奇数的方格对齐,同为偶数的方格对齐,
最后剩下的网格必然是若干个高度为奇数,若干个高度为偶数的。模2处理后就变成了一个01矩阵。
问题转化为一个01矩阵对齐的问题。
如果1的点为偶数,那么通过操作1一定可以调平衡,0同理
讨论:
总方案数为:
$$
(l-r+1)^{n*m}
$$
n*m为奇数:
奇数 = 偶数 + 奇数,0,1矩阵里必然有为偶数的点,把偶数按操作1对齐即可。
答案 = 总方案数。
n*m为偶数:
偶数 = 偶数 + 偶数 : 可以调平衡,0向1调整,1向0调整都行。
偶数 = 奇数 + 奇数 :无法调平衡 。
答案为 总方案数 - 全为 奇数的情况。
即:
$$
令 x=[l,r]区间里奇数个数,y=[l,r]区间里偶数个数 \\所求答案即为:\\\sum_{i=0}^{n*m}C_{n*m}^ix^i *C_{n*m}^{n*m-i}y^i\:\:\:\:\:\:\:\:\:i为偶数\\=(x+y)^{n*m}\:\:\:\:\:的二项式展开中偶数项\\为得到(x+y)^{n*m}中偶数项:\\构造二项式:\\(x-y)^{n*m}=\sum_{i=0}^{n*m}(-1)^{n*m-i}C_{n*m}^ix^i *C_{n*m}^{n*m-i}y^i\\当i为奇数时,(x-y)^{n*m}和(x+y)^{n*m}的项相互抵消。\\即答案为:\frac{(x+y)^{n*m}+(x-y)^{n*m}}{2}\\以上:n*m为奇数:(x+y)^{n*m}\\n*m为偶数:\frac{(x+y)^{n*m}+(x-y)^{n*m}}{2}\\
$$
HZNU Training 29 for Zhejiang Provincial Competition 2020
原文:https://www.cnblogs.com/littlerita/p/12839839.html