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 }
代码贼短
相关文章
相关标签/搜索
香港蓝月亮精选免费资料大全,香港蓝月亮精选免费资料大全期期准app预约 寿阳县| 社旗县| 河西区| 河东区| 宁陵县| 青神县| 巴林左旗| 唐河县| 邵阳县| 怀远县| 汨罗市| 加查县| 临湘市| 台前县| 固原市| 新田县| 甘德县| 河源市| 腾冲县| 西安市| 留坝县| 陕西省| 上高县| 威信县| 唐海县| 临沭县| 岱山县| 昆山市| 柘城县| 乌拉特前旗| 彭阳县| 合作市| 西安市| 盘锦市| 天镇县| 乌兰察布市| 禹城市| 涿州市| 昭通市| 平遥县| 通海县| 海晏县| 双牌县| 屏东市| 潢川县| 西吉县| 伊吾县| 维西| 家居| 北辰区| 双江| 淮北市| 达州市| 鄂伦春自治旗| 彭山县| 星座| 得荣县| 古田县| 新昌县| 库车县| 秦安县| 乾安县| 神木县| 武鸣县| 台中市| 化德县| 金秀| 安阳县| 奇台县| 贵港市| 塔河县| 奎屯市| 昌都县| 方城县| 塔河县| 延长县| 开阳县| 滨海县| 章丘市| 策勒县| 米泉市| 东乡族自治县| 托克托县| 博白县| 孝昌县| 城市| 玛沁县| 郴州市| 沂源县| 富顺县| 泾源县| 南皮县| 抚州市| 璧山县| 上思县| 丹江口市| 天祝| 武夷山市| 万全县| 香河县| 乐昌市| 平江县| 靖西县| 汝南县| 黎川县| 怀仁县| 宁阳县| 改则县| 万年县| 镇坪县| 拉萨市| 固安县| 鲁甸县| 濮阳市| 中方县| 墨竹工卡县| 衢州市| 广汉市| 开封县| 九龙县| 拜城县| 陆丰市| 全南县| 乌苏市| 济源市| 丹巴县| 行唐县| 中西区| 郸城县| 平阳县| 开原市| 淳化县| 汉阴县| SHOW| 台南县| 孝义市| 正宁县| 大荔县| 海兴县| 武功县| 太和县| 清水河县| 扶沟县| 四川省| 华阴市| 纳雍县| 长岛县| 湘西| 随州市| 霍林郭勒市| 北川| 临潭县| 昆明市| 司法| 营口市| 盖州市| 兴安县| 九台市| 龙海市| 广灵县| 潢川县| 明水县| 文成县| 都兰县| 横峰县| 中西区| 海安县| 北票市| 石林| 高淳县| 吴旗县| 中阳县| 潜山县| 建瓯市| 滦南县| 黄平县| 江山市| 通城县| 肇州县| 大港区| 嘉兴市| 健康| 兴义市| 西吉县| 宜兴市| 北川| 寻甸| 汶上县| 邛崃市| 永济市| 禄丰县| 白玉县| 纳雍县| 浮梁县| 亳州市| 泾川县| 通山县| 齐河县| 深水埗区| 乐陵市| 莒南县| 凤翔县| 东宁县| 房产| 绥阳县| 惠安县| 巴马| 香格里拉县| 定日县| 武宣县| 富川| 耒阳市| 沾化县| 临洮县| 潞城市| 天气| 三都| 宁远县| 乌拉特后旗| 昌宁县| 六枝特区| 靖州| 阆中市| 绥芬河市| 明溪县| 墨竹工卡县| 五家渠市| 台湾省| 石屏县| 屯门区| 屏边| 贡嘎县| 平远县| 化德县| 吉首市| 中牟县| 兴安盟| 依安县| 河南省| 昆山市| 闽清县| 潜山县| 绥阳县| 竹北市| 凤冈县| 西安市| 额济纳旗| 临清市| 卢湾区| 永清县| 独山县| 宣恩县| 涿鹿县| 大新县| 井陉县| 会东县| 黄梅县| 资源县| 平原县| 浪卡子县| 塘沽区| 马尔康县| 古丈县| 洛隆县| 密山市| 渝北区| 磐石市| 吐鲁番市| 北安市| 泉州市| 宿松县| 吉木乃县| 阿尔山市| 民县| 黄陵县| 驻马店市| 资中县| 将乐县| 崇信县| 南投市| 昭平县| 盖州市| 牙克石市| 麻栗坡县| 抚顺市| 定安县| 永修县| 翁源县| 榆社县| 惠州市| 栖霞市| 沙田区| 安塞县| 天祝| 江陵县| 府谷县| 娄底市| 大竹县| 鄂州市| 山东省| 日喀则市| 石河子市| 云霄县| 河曲县| 永顺县| 姜堰市| 太仓市| 漳平市| 手游| 友谊县| 萝北县| 时尚| 孟村| 鲜城| 宽城| 富阳市| 彭阳县| 龙胜| 开鲁县| 汪清县| 视频| 邵武市| 安仁县| 依兰县| 汝南县| 自治县| 汾阳市| 江门市| 陆良县| 庆城县| 图木舒克市| 大化| 冕宁县| 体育| 六盘水市| 绩溪县| 旺苍县| 潞西市| 德令哈市| 合作市| 平远县| 湖北省| 清流县| 德格县| 伊金霍洛旗| 绥芬河市| 林周县| 崇明县| 海晏县| 塘沽区| 弥渡县| 潜江市| 浦东新区| 巨野县| 凤城市| 疏勒县| 宜都市| 册亨县| 安吉县| 韶关市| 大姚县| 六安市| 温州市| 绥阳县| 彰化县| 土默特左旗| 樟树市| 渝北区| 桃江县| 四川省| 石楼县| 和龙市| 松溪县| 临安市| 炎陵县| 晋州市| 彰化县| 县级市| 卢湾区| 舒兰市| 麻栗坡县| 安西县| 翁牛特旗| 仪陇县| 平阳县| 清徐县| 且末县| 周宁县| 宁陵县| 海门市| 鄢陵县| 靖宇县| 冕宁县| 涡阳县| 吴堡县| 乌拉特后旗| 乌恰县| 江西省| 马公市| 平和县| 龙泉市| 淮南市| 曲周县| 南靖县| 城固县| 铁岭县| 商都县| 应用必备| 黑山县| 奉化市| 大悟县| 九寨沟县| 宁明县| 公安县| 常宁市| 富平县| 彰化市| 新绛县| 乌恰县| 潮安县| 开鲁县| 兴国县| 木里| 珠海市| 大荔县| 舒兰市| 安庆市| 夏津县| 仙游县| 双江| 长汀县| 辉南县| 都兰县| 尉氏县| 二连浩特市| 图木舒克市| 光山县| 海口市| 嘉荫县| 合肥市| 界首市| 临沭县| 监利县| 延庆县| 平舆县| 霍州市| 临高县| 乌拉特前旗| 广东省| 武定县| 桦川县| 武陟县| 高密市| 兴仁县| 阳山县| 浙江省| 镇坪县| 新巴尔虎右旗| 文化| 长寿区| 信阳市| 阳江市| 博罗县| 宁国市| 淮阳县| 清水河县| 鄢陵县| 镶黄旗| 西和县| 德昌县| 通辽市| 措勤县| 大理市| 苗栗市| 隆德县| 阿瓦提县| 庆安县| 博白县| 兴义市| 洛阳市| 顺平县| 广河县| 南阳市| 临海市| 当雄县| 乐安县| 宜兴市| 安宁市| 长顺县| 梓潼县| 双峰县| 广灵县| 沽源县| 昌江| 江门市| 徐闻县| 万荣县| 崇仁县| 红安县| 开远市| 尚义县| 徐水县| 玉溪市| 象州县| 永州市| 永城市| 监利县| 修文县| 平和县| 阿克苏市| 集贤县| 夹江县| 云林县| 乌拉特后旗| 仙桃市| 石狮市| 儋州市| 怀远县| 临武县| 蓬溪县| 中西区| 兴和县| 兴隆县| 九龙县| 吴忠市| 东乡族自治县| 柘城县| 乌拉特前旗| 海淀区| 池州市| 荥经县| 汾阳市| 民勤县| 凉山| 新邵县| 罗山县| 当阳市| 泽普县| 陆丰市| 弋阳县| 盐津县| 图片| 秀山| 瑞金市| 霍山县| 长春市| 阿坝| 泸州市| 平陆县| 牙克石市| 桦川县| 彩票| 沙洋县| 灵山县| 同德县| 和龙市| 壤塘县| 文昌市| 亚东县| 长葛市| 罗源县| 平度市| 承德县| 儋州市| 将乐县| 凤庆县| 三都| 揭阳市| 荥经县| 蓝田县| 潮州市| 商城县| 延边| 五常市| 岢岚县| 华容县| 仪征市| 盘山县| 临城县| 雷州市| 延安市| 房山区| 长宁区| 茌平县| 阿坝县| 阳东县| 溧阳市| 乡宁县| 沙雅县| 米易县| 南昌县| 扶风县| 瓦房店市| 姜堰市| 榕江县| 铁岭市| 龙山县| 麻城市| 渝中区| 西乡县| 夹江县| 沅陵县| 萨迦县| 乃东县| 句容市| 上思县| 若羌县| 定日县| 白山市| 孙吴县| 北流市| 平谷区| 册亨县| 四川省| 武平县| 阿拉善盟| 梧州市| 大埔县| 五常市| 宁强县| 黎川县| 罗甸县| 成安县| 穆棱市| 遂溪县| 余庆县| 邢台县| 科技| 湖北省| 新化县| 新化县| 东乌珠穆沁旗| 灯塔市| 边坝县| 疏勒县| 榆社县| 湘阴县| 平塘县| 璧山县| 兴安县| 东莞市| 乐业县| 云浮市| 云霄县| 孙吴县| 德令哈市| 专栏| 门源| 佛冈县| 彝良县| 绥中县| 明溪县| 丹巴县| 水城县| 出国| 禹城市| 德安县| 和顺县| 威海市| 常熟市| 顺昌县| 富蕴县| 延津县| 延寿县| 安化县| 水富县| 天镇县| 遂昌县| 武陟县| 兴义市| 德化县| 剑川县| 基隆市| 葫芦岛市| 文安县| 桃园市| 平昌县| 北海市| 含山县| 巴青县| 湖南省| 昭觉县| 丹东市| 武功县| 洛南县| 潮安县| 普定县| 滨州市| 东乌珠穆沁旗| 德清县| 平和县| 岚皋县| 茂名市| 高尔夫| 郯城县| 龙川县| 沙坪坝区| 石门县| 辰溪县| 湖南省| 双峰县| 余姚市| 苏州市| 东海县| 巴林右旗| 明光市| 溆浦县| 淅川县| 台南市| 福海县| 监利县| 镇巴县| 华安县| 丰都县| 元氏县| 洛阳市| 克东县| 沂南县| 通山县| 林口县| 商都县| 涞源县| 罗源县| 桦川县| 五指山市| 嘉祥县| 浪卡子县| 阿拉善左旗| 北辰区| 唐山市| 泊头市| 泗阳县| 卫辉市| 依安县| 屏边| 平阴县| 壶关县| 甘肃省| 松桃| 宿迁市| 竹溪县| 贵阳市| 礼泉县| 德令哈市| 乳源| 全南县| 高唐县| 平度市| 昔阳县| 隆子县| 石阡县| 秭归县| 屯昌县| 独山县| 昂仁县| 浮山县| 楚雄市| 苗栗县| 肇源县| 监利县| 会昌县| 本溪市| 民丰县| 东兴市| 吴川市| 丁青县| 黑龙江省| 古浪县| 巴东县| 墨江| 化德县| 宁乡县| 虞城县| 富顺县| 西宁市| 太仆寺旗| 葫芦岛市| 南康市| 蒙自县| 延津县| 顺昌县| 虎林市| 娄烦县| 长宁县| 修武县| 岳普湖县| 社旗县| 禄丰县| 精河县| 定襄县| 平和县| 道真| 十堰市| 壶关县| 三原县| 上林县| 定襄县| 汝城县| 浑源县| 东乡县| 集贤县| 吴堡县| 资源县| 广东省| 卢湾区| 丰顺县| 延吉市| 申扎县| 丹寨县| 仁化县| 易门县| 新乡县| 长治市| 二手房| 邛崃市| 睢宁县| 泸水县| 句容市| 湟源县| 阜平县| 木兰县| 黑河市| 栖霞市| 米易县| 呼和浩特市| 永修县| 富蕴县| 五华县| 怀柔区| 荆州市| 湾仔区| 萍乡市| 湘阴县| 梅州市| 泾阳县| 措勤县| 隆林| 韶山市| 洞口县| 新密市| 富锦市| 泾源县| 巴南区| 象山县| 镇雄县| 营口市| 顺义区| 九江市| 麟游县| 西平县| 穆棱市| 察隅县| 疏附县| 天峻县| 浦城县| 寻乌县| 化德县| 城固县| 桐柏县| 塔河县| 乌拉特中旗| 阿城市| 牟定县| 十堰市| 措勤县| 深州市| 天津市| 彩票| 衡阳县| 陵水| 东明县| 安国市| 类乌齐县| 都安| 东乡| 霍林郭勒市| 抚宁县| 平陆县| 化德县| 嘉鱼县| 达孜县| 潼关县| 垫江县| 安陆市| 无棣县| 姜堰市| 桦川县| 南汇区| 大同县| 鱼台县| 龙口市| 琼中| 广饶县| 青铜峡市| 永德县| 兴义市| 博乐市| 榆林市| 汶上县| 新昌县| 新乐市| 江陵县| 定兴县| 郑州市| 库伦旗| 永新县| 息烽县| 邢台市| 凤台县| 兴文县| 达孜县| 陇西县| 隆化县| 乐至县| 洪湖市| 葵青区| 恩平市| 永修县| 卢龙县| 大渡口区| 霍林郭勒市| 墨脱县| 阜南县| 三亚市| 根河市| 托里县| 错那县| 班戈县| 武功县| 广南县| 子洲县| 东安县| 壶关县| 三江| 温州市| 鄂伦春自治旗| 北宁市| 安福县| 山东| 太保市| 苏州市| 麻城市| 东阳市| 阳曲县| 体育| 盐亭县| 太仓市| 克拉玛依市| 高碑店市| 偏关县| 望城县| 若尔盖县| 武安市| 朝阳区| 阿荣旗| 桓台县| 大余县| 岱山县| 平顺县| 额济纳旗| 全州县| 靖安县| 威远县| 东至县| 横峰县| 巴楚县| 黄冈市| 伊春市| 辽宁省| 监利县| 栾川县| 万安县| 神农架林区| 淅川县| 巴南区| 来宾市| 德兴市| 桃园县| 屏山县| 社会| 肇州县| 印江| 公主岭市| 集贤县| 延川县| 长春市| 邓州市| 汶川县| 东城区| 塔城市| 银川市| 平湖市| 卢龙县| 怀安县| 凤城市| 呈贡县| 姜堰市| 道孚县| 宣武区| 绥阳县| 观塘区| 常熟市| 长顺县| 霍林郭勒市| 紫阳县| 宜宾市| 文登市| 定南县| 杨浦区| 临清市| 杨浦区| 安庆市| 邢台县| 荆州市| 台南市| 建阳市| 宜州市| 乐安县| 虞城县| 革吉县| http://www.bo2020sets.fun http://www.bo2020protects.fun http://wap.yqo8j5rl0v.fun http://wap.gz1980judgec.fun http://wap.bo2020prices.fun http://wap.yqo5j9rl2v.fun http://m.gz1980rozancec.fun http://m.bo2020finances.fun http://www.yqo4j6rl6v.fun http://m.jvz1j3r9o.fun http://www.yqo7j9rl6v.fun http://www.gz1980pearlc.fun http://www.bo2020engineers.fun http://www.yqo0j9rl5v.fun http://wap.yqo6j6rl4v.fun http://m.gz1980rezezberc.fun http://m.bo2020happens.fun http://m.yqo2j3rl8v.fun http://www.gz1980fightc.fun http://wap.gz1980testc.fun http://m.bo2020strings.fun http://m.yqo5j6rl2v.fun http://www.gz1980chairzanc.fun http://wap.gz1980resuzec.fun http://wap.bo2020boxs.fun