Codeforces Round #594 (Div. 2) - C. Ivan the Fool and the Probability Theory(思维)
题意:给n*m的网格涂黑白两种颜色,保证每个格子上下左右的四个格子中最多只有一个格子与自己颜色相同,问有多少种涂法?结果$mod1000000007$
思路:先只考虑一行有多少种涂法
- $dp[i][0]$表示第$i$个格子与第$i-1$个格子颜色不一样,那么第$i-1$与第$i-2$个格子颜色可以不同也可以相同,所以$dp[i][0]=dp[i-1][1]+dp[i-1][0]$
- $dp[i][1]$表示第$i$个格子与第$i-1$个格子颜色相同,那么第$i-1$与第$i-2$格子颜色只能不相同,所以$dp[i][1]=dp[i-1][0]$
再考虑其他行的情况:
- 第一行有两个连续格子颜色相同时的情况(即 黑黑白黑白...这种情况),这时第二行必须跟第一行完全相反才能符合题意。
证明如下:以 黑黑白黑白 为例,如果 黑黑 的下一行出现了 黑,显然不符合题意,所以 黑黑 的下一行只能为 白白,其次如果第三个 白 的下一行为 白,就和前面的两个 白 组成了连续的三个 白,不符合题意,所以此时下一行必须与上一行完全相反。
- 第一行没有两个连续格子颜色相同时的情况(即 黑白黑白黑白...这种情况),设$f(i)$表示加入第$i$行时有多少种情况,如果第$i-1$和第$i-2$行颜色相同,那么第$i$行与第$i-1$行颜色不能相同,如果第$i-1$和第$i-2$行颜色不同,那么第$i$行和第$i-1$行颜色可以相同也可以不同,先假设第$i$行与第$i-1$行颜色不同,那么有$f(i-1)$种,只有当第$i-1$行与第$i-2$行颜色不同时第$i$行与第$i-1$行颜色才能相同,有$f(i-2)$种,所以$f(i)=f(i-1)+f(i-2)$,满足斐波那契数列。
第一种情况有$dp[m][0]+dp[m][1]-2$种(除去 黑白黑白黑白... 白黑白黑白黑... 这两种情况),第二种情况只有两种,所以最后的方案数为$dp[m][0]+dp[m][1]-2+2*f(n)$
其实行和列都是斐波那契数列,比赛时没看出来,答案为$2*(f(n)+f(m))-2$
#include <iostream>
#include <cstdio>
#include <algorithm> using namespace std; typedef long long ll; const int N = ;
const ll mod = int(1e9) + ; ll dp[N][], n, m;
ll f[N]; int main()
{
scanf("%lld%lld", &n, &m);
dp[][] = , dp[][] = ;
for (int i = ; i <= m; i++) {
dp[i][] = (dp[i - ][] + dp[i - ][]) % mod;
dp[i][] = dp[i - ][] % mod;
}
f[] = , f[] = ;
for (int i = ; i <= n; i++) f[i] = (f[i - ] + f[i - ]) % mod;
ll res = (dp[m][] + dp[m][]) % mod;
ll ans = ((f[n] * ) % mod + (res - ) % mod) % mod;
printf("%lld\n", ans);
return ;
}
Codeforces Round #594 (Div. 2) - C. Ivan the Fool and the Probability Theory(思维)的更多相关文章
- Codeforces Round #594 (Div. 2) C. Ivan the Fool and the Probability Theory (思维,递推)
题意:给你一个\(n\)x\(m\)的矩阵,需要在这些矩阵中涂色,每个格子可以涂成黑色或者白色,一个格子四周最多只能有\(2\)个和它颜色相同的,问最多有多少种涂色方案. 题解:首先我们考虑一维的情况 ...
- Codeforces Round #594 (Div. 1) A. Ivan the Fool and the Probability Theory 动态规划
A. Ivan the Fool and the Probability Theory Recently Ivan the Fool decided to become smarter and stu ...
- Codeforces Round #594 (Div. 2)
传送门 C. Ivan the Fool and the Probability Theory 题意: 给出一个\(n*m\)的方格,现在要给方格中的元素黑白染色,要求任一颜色最多有一个颜色相同的格子 ...
- Codeforces Round #594 (Div. 1)
Preface 这场CF真是细节多的爆炸,B,C,F都是大细节题,每道题都写了好久的说 CSP前的打的最后一场比赛了吧,瞬间凉意满满 希望CSP可以狗住冬令营啊(再狗不住真没了) A. Ivan th ...
- Codeforces Round #539 (Div. 2) - C. Sasha and a Bit of Relax(思维题)
Problem Codeforces Round #539 (Div. 2) - C. Sasha and a Bit of Relax Time Limit: 2000 mSec Problem ...
- Codeforces Round #716 (Div. 2), problem: (B) AND 0, Sum Big位运算思维
& -- 位运算之一,有0则0 原题链接 Problem - 1514B - Codeforces 题目 Example input 2 2 2 100000 20 output 4 2267 ...
- Codeforces Round #594 (Div. 1) Ivan the Fool and the Probability Theory
题意:给你一个NxM的图,让你求有多少符合 “一个格子最多只有一个同颜色邻居”的图? 题解:首先我们可以分析一维,很容易就可以知道这是一个斐波那契计数 因为dp[1][m]可以是dp[1][m-1]添 ...
- Codeforces Round #594 (Div. 1) D. Catowice City 图论
D. Catowice City In the Catowice city next weekend the cat contest will be held. However, the jury m ...
- Codeforces Round #594 (Div. 1) C. Queue in the Train 模拟
C. Queue in the Train There are
随机推荐
- UIAutomation反编译调试一句话体验
ILSpy比dotpeek好使 ILSpy生成的pdb调试起来基本没发现问题,最多只是代码步骤位置和实际位置差了一行而已,不影响判断. dotpeek反编译出来的代码能看,但调试是基本没办法定位的,位 ...
- ehcache注解全面解析
通过ehcache以编程方式使用缓存: 跟上面的方式相同,但是缓存通过ehcache去管理,当然比使用map有N多种好处,比如缓存太大了快达到上限之后,将哪一部分缓存清除出去.这种方式完全是通过代码的 ...
- Mac系统中桌面图片和用户头像图片的路径
系统中的桌面图片: /Library/Desktop Pictures/ 用户头像图片: 根目录资源库/user pictures/ 参考: [https://bbs.feng.com/read-ht ...
- hbase60010端口无法访问web页面
原因:HBASE1.0之后的版本web端访问的接口变更为16010
- JSON parse error: default constructor not found. class java.time.YearMonth; nested exception is com.alibaba.fastjson.JSONException: default constructor not found. class java.time.YearMonth
java8新出的YearMonth可以方便的用来表示某个月.我的项目中使用springmvc来接收YearMonth类型的数据时发现 x-www-from-urlencoded 格式的数据可以使用&q ...
- pycharm新建Django时,遇到的坑,安装index包失败
https://blog.csdn.net/li93675/article/details/89418097 如果在pycharm中导入django包 ,只对当前项目有效,建议使用命令pip inst ...
- 「POI2010」Bridges
传送门 Luogu团队题链接 解题思路 首先二分答案,然后在所有边权小于二分值的边和所有点组成的图中判欧拉回路. 由于可能出现混合图,所以要用到网络流. 把所有无向边钦定一个方向,那么原图就是一个有向 ...
- 转:建立maven私服
一.下载安装与配置 下载 到官网下载:https://www.sonatype.com/download-oss-sonatype image.png 下载的是oss3.x版本的(当时最新版), ...
- Linux中命令备份mysql形成文件
基于龙哥(Thomas)的总结: mysqldump -u 用户名 -p密码 数据库名>bbs87.sql | tar -zcvf bbs87.tar.gz bbs87.sql 通过词条命令可以 ...
- spark sql 访问mysql数据库
pom.xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-ja ...