CF C.Ivan the Fool and the Probability Theory【思维·构造】

题目传送门

题目大意:

一个$n*m$的网格图,每个格子可以染黑色、白色,问每个格子最多有一个相邻格子颜色相同的涂色方案数
$n,m<=1e5$

分析:

首先,考虑到如果有两个相邻的格子颜色相同,那么这两行/列的格子状态就确定了。比如:

分享图片

 

 

 在中间两个爱心格子被确定的情况下,第二列和第三列的涂色情况就已经被确定了。实际上,第一列和第四列涂的颜色也确定了。(最后这句话我们留着待会儿分析)

分享图片

 

 

 同理,在中间两个星星确定的时候,第二行和第三行的涂色情况也唯一确定。实际上,第一行和第四列涂的颜色也确定了。

 


假如说在一个方格中,既有横着出现的两个连续的一样颜色的格子,也有竖着出现的两个连续的一样颜色的格子,就像这样:

分享图片

 

 分享图片

 

 分享图片

 

 

 

那么一定会产生矛盾,无论怎么挪都会产生矛盾。(橙色的部分是既需要用灰色,也需要用蓝色涂的格子,是矛盾的地方)

所以,在一种着色方案中,这种相邻两个颜色一样的情况只会在一个方向中出现,我们只需要考虑一个方向那么多行的方案数,另外一个方向的同理就好。

 


 

如果已经确定相邻两个颜色一样的格子出现的方向(为方便讨论,下面我们假设这两个格子是竖着的),那么每一行的格子颜色一定是交错的,两行之间要么一样,要么颜色相反,而且颜色一样的不能连着出现3次及以上。

在第一行确定的情况下,如果要求每一个格子的每个相邻格子的颜色都和他不一样,那么这是一个棋盘染色,就唯一确定了。

但是,按照这道题的条件来说的话,后面的格子可以有两行,也可以只有一行。(就是一次性确定两行或一次性确定一行)

Like this:

分享图片

 

 

 

分享图片

 

 

 设$f[i]$表示铺到第$i$行(前$i$行)的方案总数,那么递推式就是$f[i]=f[i-1]+f[i-2]$

(初始化$f[0]=1$是一开始就是两行连着一样的情况)

答案就是$f[n]$。

然后,还有相邻两个颜色一样的格子是竖着的,方案数就是$f[m]$,这两类在前面已经说过没有交集,答案就是$f[n]+f[m]$

然后,棋盘染色的情况在两种情况中都被计算了,所以答案要减1。

最后,黑白颜色可以反过来,所以乘2.

做完了,$Nice!$

分享图片
 1 /*
 2 ID: Starry21               
 3 */ 
 4 #include<iostream>
 5 #include<string>
 6 #include<cstdio>
 7 #include<cstring>
 8 #include<map>
 9 #include<algorithm>
10 using namespace std;
11 #define N 100005
12 #define ll long long
13 #define MOD 1000000007
14 int n,m;
15 ll f[N];
16 int main()
17 {
18     scanf("%d %d",&n,&m);
19     f[0]=f[1]=1;
20     for(int i=2;i<=max(n,m);i++)
21         f[i]=(f[i-1]+f[i-2])%MOD;
22     printf("%lld\n",2*((f[n]+f[m])%MOD-1+MOD)%MOD);
23     return 0;
24 }
代码贼短
相关文章
相关标签/搜索
2019香港 六 合 彩资料大全 张掖市| 米林县| 伊宁县| 大悟县| 航空| 新营市| 澳门| 昌邑市| 庄浪县| 英吉沙县| 兴和县| 三河市| 龙川县| 奉贤区| 永兴县| 南丰县| 宣威市| 伊通| 北碚区| 陇南市| 祁连县| 屏山县| 富阳市| 客服| 丘北县| 正镶白旗| 台东市| 德庆县| 麻江县| 达拉特旗| 兴海县| 施甸县| 原阳县| 长乐市| 九寨沟县| 合山市| 庆云县| 甘孜| 沙坪坝区| 巴东县| 温泉县| 张家港市| 金华市| 浠水县| 北海市| 浦北县| 凤翔县| 阳信县| 穆棱市| 综艺| 通渭县| 宁乡县| 汉阴县| 灯塔市| 崇阳县| 油尖旺区| 新源县| 墨脱县| 麦盖提县| 江口县| 江达县| 瓮安县| 丘北县| 新沂市| 山西省| 宜城市| 武山县| 卢氏县| 博罗县| 三原县| 合水县| 永吉县| 内乡县| 新密市| 沧州市| 南郑县| 封开县| 扶余县| 沁源县| 张家港市| 衡阳县| 紫云| 连平县| 迭部县| 苏州市| 常德市| 平果县| 孟津县| 东山县| 辽源市| 阿克苏市| 宜丰县| 昭通市| 布拖县| 大埔县| 汉中市| 武川县| 绿春县| 茶陵县| 北流市| 盈江县| 永宁县| 曲麻莱县| 阿拉善左旗| 淮阳县| 稻城县| 临沂市| 行唐县| 海口市| 平泉县| 枣庄市| 兴和县| 桂林市| 余庆县| 赤壁市| 通许县| 顺昌县| 连云港市| 五寨县| 科技| 繁峙县| 弥渡县| 丽水市| 永寿县| 天长市| 贵港市| 仁怀市| 甘洛县| 高唐县| 襄城县| 仁寿县| 江口县| 昌乐县| 蓬莱市| 阜阳市| 富蕴县| 始兴县| 应用必备| 肥西县| 汕头市| 临夏市| 宁安市| 合作市| 柯坪县| 韩城市| 东丽区| 综艺| 开鲁县| 都兰县| 安陆市| 北安市| 三门峡市| 娄底市| 山西省| 龙南县| 蒲城县| 榆社县| 阿拉善左旗| 神农架林区| 开江县| 喀喇| 信阳市| 饶河县| 汉中市| 浮梁县| 绵竹市| 胶州市| 仲巴县| 正蓝旗| 通州市| 旌德县| 宜春市| 黄梅县| 富宁县| 长宁县| 广汉市| 崇阳县| 谷城县| 双城市| 宕昌县| 菏泽市| 彩票| 府谷县| 阿巴嘎旗| 虎林市| 浦城县| 河源市| 衡山县| 铜梁县| 文水县| 阆中市| 临高县| 汕头市| 杭锦旗| 麦盖提县| 丰顺县| 诸暨市| 白银市| 莱阳市| 岚皋县| 新巴尔虎右旗| 桐乡市| 浮梁县| 潜山县| 襄垣县| 鄂尔多斯市| 宽甸| 林口县| 德令哈市| 阜南县| 镇原县| 渑池县| 宝坻区| 禹州市| 滦南县| 苍梧县| 蓝田县| 大名县| 安国市| 郎溪县| 土默特左旗| 龙泉市| 游戏| 苏尼特左旗| 广灵县| 眉山市| 张家口市| 咸丰县| 九寨沟县| 馆陶县| 启东市| 荆州市| 耒阳市| 兰考县| 正阳县| 枣庄市| 延吉市| 青岛市| 太原市| 镇远县| 临海市| 固阳县| 横峰县| 白银市| 东辽县| 邹城市| 楚雄市| 华池县| 克东县| 舞阳县| 彭州市| 宣恩县| 抚州市| 夏津县| 华阴市| 怀宁县| 太和县| 万盛区| 台南市| 进贤县| 邢台市| 瑞金市| 十堰市| 沾化县| 安陆市| 新泰市| 荣成市| 苍南县| 彭水| 于都县| 西青区| 栾川县| 彰化市| 石台县| 静海县| 安阳市| 洪湖市| 汶川县| 永平县| 定结县| 施甸县| 大邑县| 雷州市| 兴化市| 高雄县| 资源县| 多伦县| 芦山县| 彭阳县| 黑山县| 鸡西市| 梁山县| 都兰县| 廊坊市| 饶河县| 苍山县| 庄河市| 阿图什市| 文昌市| 古田县| 扎鲁特旗| 黑水县| 林甸县| 大关县| 张家港市| 宜章县| 庆城县| 方正县| 于都县| 齐河县| 南城县| 武义县| 卓资县| 鞍山市| 客服| 荥阳市| 南阳市| 静安区| 自贡市| 普兰店市| 宜章县| 涪陵区| 玉树县| 土默特右旗| 莎车县| 沙河市| 顺平县| 乌海市| 什邡市| 余姚市| 英吉沙县| 南召县| 板桥市| 保靖县| 准格尔旗| 临清市| 加查县| 五台县| 友谊县| 岗巴县| 前郭尔| 金坛市| 溧阳市| 民勤县| 长顺县| 沙洋县| 辽宁省| 江川县| 高密市| 浠水县| 双鸭山市| 长岛县| 泸西县| 鄂尔多斯市| 靖远县| 建德市| 双鸭山市| 定远县| 临汾市| 隆林| 昭觉县| 安福县| 卢龙县| 长沙县| 惠东县| 讷河市| 确山县| 安塞县| 徐汇区| 确山县| 奇台县| 保靖县| 宁南县| 剑河县| 天柱县| 宜良县| 宜宾县| 安陆市| 司法| 新宁县| 清河县| 柘荣县| 满城县| 上林县| 泾阳县| 教育| 莎车县| 肃宁县| 宁都县| 普定县| 那坡县| 广元市| 罗田县| 德兴市| 邳州市| 泽库县| 彰武县| 油尖旺区| 博爱县| 彭阳县| 松原市| 德保县| 安多县| 酉阳| 石棉县| 北海市| 兴文县| 建阳市| 繁峙县| 子长县| 信丰县| 隆林| 调兵山市| 香格里拉县| 武宁县| 蓬溪县| 永清县| 马鞍山市| 陕西省| 临夏县| 海原县| 张家川| 喀什市| 敦煌市| 青龙| 南昌市| 晋城| 东安县| 方正县| 徐闻县| 赞皇县| 通化县| 阳西县| 贡嘎县| 太白县| 鄂温| 庆阳市| 合水县| 黎平县| 汉阴县| 湘阴县| 中阳县| 普洱| 凌源市| 佛教| 安泽县| 常宁市| 宁夏| 拉孜县| 同德县| 长子县| 余干县| 乐平市| 沛县| 文山县| 广水市| 安阳市| 兴隆县| 蓝田县| 嘉禾县| 西贡区| 婺源县| 银川市| 凤阳县| 遂溪县| 延安市| 台江县| 哈巴河县| 镇安县| 万州区| 通许县| 莆田市| 澳门| 昭平县| 许昌市| 商都县| 富民县| 霍邱县| 雅安市| 航空| 清丰县| 钟山县| 筠连县| 墨竹工卡县| 托克托县| 商河县| 鱼台县| 隆回县| 朝阳县| 红桥区| 永寿县| 将乐县| 广平县| 惠安县| 商洛市| 邢台市| 当涂县| 荆州市| 大关县| 博客| 吉木萨尔县| 友谊县| 杭锦旗| 车致| 汤阴县| 岢岚县| 龙州县| 邯郸县| 三门峡市| 阿勒泰市| http://wap.gz1980cockc.fun http://www.jvz1j3r0o.fun http://www.bo2020filters.fun http://www.yqo7j5rl8v.fun http://www.gz1980planc.fun http://wap.gz1980webc.fun http://wap.bo2020bodys.fun http://m.yqo0j4rl7v.fun http://www.gz1980bec.fun http://m.gz1980poolc.fun http://www.bo2020carrys.fun http://wap.bo2020frenchs.fun http://m.yqo6j3rl7v.fun http://www.gz1980contractc.fun http://wap.gz1980payc.fun