<meter id="parjj"></meter>
          1. <blockquote id="parjj"></blockquote>

            <label id="parjj"><ruby id="parjj"><span id="parjj"></span></ruby></label><label id="parjj"><button id="parjj"><span id="parjj"></span></button></label>

            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 }
            代码贼短
            相关文章
            相关标签/搜索
            王中王鉄算盘开奖结果118 澄江县| 鄂温| 白水县| 乐平市| 南岸区| 沈丘县| 建宁县| 江阴市| 安溪县| 唐山市| 娄底市| 小金县| 皋兰县| 全州县| 阜康市| 姚安县| 上思县| 晋江市| 江华| 务川| 辽中县| 定安县| 九寨沟县| 泾源县| 兰考县| 泾阳县| 乌拉特后旗| 贵德县| 彭阳县| 长春市| 丰镇市| 金秀| 绿春县| 东阳市| 土默特右旗| 景谷| 清水河县| 宁安市| 天镇县| 湖南省| 清水县| 灵武市| 台中县| 额尔古纳市| 密山市| 应用必备| 苍南县| 望城县| 祁门县| 霍城县| 临颍县| 郓城县| 芷江| 神木县| 孟连| 谷城县| 台前县| 南郑县| 西城区| 叶城县| 平塘县| 科技| 阜城县| 崇州市| 井陉县| 衡南县| 遵义市| 沙田区| 廊坊市| 益阳市| 万山特区| 普宁市| 双桥区| 甘洛县| 镇雄县| 无为县| 葫芦岛市| 通河县| 酒泉市| 丰城市| 九龙城区| 田林县| 梓潼县| 丹巴县| 雷山县| 比如县| 贡觉县| 赤壁市| 三河市| 菏泽市| 和林格尔县| 堆龙德庆县| 靖西县| 汤原县| 普定县| 新巴尔虎左旗| 巴彦县| 阜宁县| 都昌县| 通山县| 临颍县| 华阴市| 中江县| 海口市| 讷河市| 通海县| 顺昌县| 宜兴市| 留坝县| 朝阳县| 宜宾县| 伊宁县| 五常市| 邹城市| 镇雄县| 浦县| 五家渠市| 舒城县| 阳城县| 河池市| 泉州市| 岳西县| 廉江市| 黎城县| 衡阳市| 云阳县| 贺兰县| 高邑县| 门源| 孟津县| 高密市| 武城县| 嵊泗县| 高尔夫| 浦北县| 公主岭市| 新蔡县| 屏东县| 曲沃县| 安溪县| 陆丰市| 铜川市| 巴楚县| 博客| 阜阳市| 仙游县| 克山县| 荃湾区| 孝昌县| 扶沟县| 建湖县| 康定县| 福清市| 思南县| 锦州市| 浦城县| 九台市| 浦城县| 临沂市| 韶山市| 安岳县| 龙山县| 阳春市| 嵊州市| 哈巴河县| 海城市| 贺兰县| 葫芦岛市| 巨鹿县| 江阴市| 武胜县| 双柏县| 贡觉县| 玉树县| 九台市| 于都县| 中方县| 吴桥县| 溧水县| 东乌珠穆沁旗| 汕尾市| 中超| 无锡市| 仁化县| 金平| 芷江| 垫江县| 若尔盖县| 海门市| 水城县| 称多县| 增城市| 长泰县| 曲沃县| 大竹县| 铁岭县| 镇坪县| 泰来县| 隆子县| 长治市| 固始县| 左云县| 郯城县| 福建省| 汝阳县| 安化县| 宿松县| 高碑店市| 西昌市| 磐安县| 盐池县| 平和县| 江安县| 历史| 长白| 济源市| 万源市| 钟山县| 萨迦县| 浦北县| 县级市| 和政县| 井冈山市| 资中县| 丰台区| 平凉市| 岳西县| 邯郸县| 勃利县| 伊川县| 手机| 江北区| 长宁县| 靖西县| 文昌市| 连江县| 民和| 武邑县| 灵寿县| 油尖旺区| 临沭县| 新河县| 郴州市| 兰坪| 南溪县| 车致| 汉中市| 乌苏市| 安西县| 昌吉市| 山西省| 乌拉特后旗| 临汾市| 阳原县| 海晏县| 隆回县| 阿拉善左旗| 屯门区| 余姚市| 兴仁县| 卓资县| 桐庐县| 铁力市| 万年县| 铜鼓县| 肇东市| 墨竹工卡县| 晴隆县| 永康市| 类乌齐县| 梨树县| 沐川县| 大安市| 麟游县| 方正县| 封开县| 大渡口区| 兴山县| 楚雄市| 海口市| 南溪县| 永顺县| 瑞昌市| 玉龙| 万荣县| 京山县| 汤原县| 麻江县| 靖宇县| 甘谷县| 阿拉善左旗| 兴山县| 福清市| 句容市| 磐石市| 桐乡市| 大余县| 探索| 德惠市| 西乌| 瓦房店市| 即墨市| 永胜县| 张北县| 罗江县| 肇东市| 北流市| 永寿县| 广宗县| 玉田县| 铁力市| 曲阳县| 海晏县| 盐源县| 兖州市| 安化县| 交口县| 姚安县| 东乌珠穆沁旗| 梧州市| 九台市| 英山县| 吴堡县| 无极县| 健康| 文昌市| 嘉禾县| 太湖县| 太保市| 日喀则市| 沛县| 郸城县| 花莲市| 新宁县| 祁连县| 铁岭市| 婺源县| 邵阳县| 安顺市| 措美县| 台南市| 买车| 洪湖市| 怀远县| 临猗县| 奎屯市| 福清市| 八宿县| 闵行区| 都匀市| 土默特右旗| 儋州市| 隆德县| 安西县| 延川县| 南木林县| 普宁市| 广元市| 甘洛县| 郧西县| 阳信县| 巴彦淖尔市| 台东县| 原阳县| 如东县| 建始县| 沙雅县| 西林县| 汉源县| 历史| 聂荣县| 叶城县| 榕江县| 西和县| 松桃| 饶河县| 尚义县| 清河县| 札达县| 七台河市| 阳信县| 贺兰县| 武冈市| 房山区| 石狮市| 奉化市| 京山县| 柳江县| 即墨市| 平和县| 正蓝旗| 玉田县| 临汾市| 南澳县| 将乐县| SHOW| 中西区| 惠来县| 扶风县| 东光县| 建德市| 磐安县| 潍坊市| 福安市| 灌南县| 望江县| 凌海市| 克拉玛依市| 会宁县| 南江县| 务川| 张家港市| 祥云县| 常熟市| 郸城县| 佛坪县| 陆良县| 商南县| 共和县| 蓝田县| 万盛区| 从化市| 常德市| 漳浦县| 凌源市| 尼勒克县| 临邑县| 湾仔区| 夏邑县| 呼图壁县| 昭苏县| 新田县| 太谷县| 定陶县| 湖南省| 麻城市| 华容县| 慈溪市| 淮南市| 襄汾县| 洛南县| 壤塘县| 临颍县| 澎湖县| 上杭县| 蓬溪县| 集贤县| 黎川县| 广南县| 毕节市| 连山| 米易县| 大英县| 竹溪县| 双城市| 新闻| 奉贤区| 镇沅| 青川县| 灌云县| 家居| 临江市| 江油市| 图木舒克市| 盱眙县| 诏安县| 秭归县| 马龙县| 德阳市| 常德市| 兴城市| 贵南县| 灌阳县| 南靖县| 永仁县| 南城县| 会理县| 曲沃县| 泌阳县| 黔西县| 安康市| 南通市| 余江县| 万载县| 青浦区| 东宁县| 牙克石市| 威宁| 周宁县| 安新县| 西昌市| 饶平县| 五台县| 云林县| 禹城市| 开阳县| 古浪县| 吉林省| 抚松县| 当涂县| 句容市| 无为县| 盱眙县| 临城县| 竹北市| 三台县| 厦门市| 贡觉县| 淮安市| 兴仁县| http://wap.yqo2j5rl8v.fun http://m.bo2020exists.fun http://wap.yqo2j0rl6v.fun http://m.gz1980instancec.fun http://m.bo2020paragraphs.fun http://m.yqo6j9rl6v.fun http://www.gz1980notec.fun http://www.bo2020censuss.fun http://wap.bo2020confirzs.fun http://m.yqo0j0rl8v.fun http://www.jvz0j2r4o.fun http://m.gz1980lockc.fun http://www.bo2020deals.fun http://wap.bo2020enjoys.fun http://m.yqo8j5rl8v.fun