Description
给定2×M的网格,每个网格可以染red, green, blue三种颜色之一,
并有三个限制。
最后要有R个红色,
G 个绿色,B个蓝色。相邻网格不能染相同的颜色。
每个
2×2 的网格要包含三种颜色。
求合法的染色方案数,答案对109+7取模。
Constraint
M,R,G,B≤106
Analysis
2×M的网格状态太多,我们把它转换成1×M的状态,
记Ai为第i列没有染上的颜色,根据第3个限制,可以得到
根据第2个限制,确定了A序列,整个染色情况就确定了,
但开头
那么现在我们计算
枚举开头的颜色及个数,设个数为X,会把序列分成
那么这
而一个段若有奇数个位置,该段开头的颜色将会多放一个。
设g段中有
剩下两种颜色总数为Y,Z,在奇数段中开头的个数分别为oY,oZ,我们设出方程组,
解出oY,oZ。首先oY+oZ是所有的奇数段,然后剩下的Y−oY,Z−oZ放在偶数段
(奇数段放了开头也变成偶数段)中,因为放了一个另一个就要交替的放,所以个数要相同。
最后答案的形式是
首先选出偶数段,然后奇数段中选择Y开头的,然后每个偶数段中开头有两种情况,
考虑到段里非空,所以
因为剩下的
所以