C. Ivan the Fool and the Probability Theory

题意: 给n行m列,让构造黑白块,要求每个块周围最多一个和自己颜色相同的块,问最多有多少种构造方法?

思考 : 首先如果第一行是

这样的话,那么下面的每一行一定都确定了因为有两个相同的颜色出现,

但是如果是这样

黑白相间的情况的话, 那么第一行确定的话,第二行就会有两种情况,第一种是和第一行一样,第二种是和第一行完全相反。

黑白相间的情况有两种,黑白黑白黑 和白黑白黑白 这两种

当两种情况任意一种出现的时候,他的种类数就可以变成竖着来求一次dp的情况。

所以总的种类数 = 第一行所有的种类数 - 黑白相间的两种情况 + 当黑白相间的时候的竖着的情况

dp[i][0] 代表第i个位置放白色的情况 dp[i][1]代表第i个位置放黑色的情况

dp[i][1] = dp[i-1][0]+ dp[i-2][0];

dp[i][0] = dp[i-1][1]+ dp[i-2][1];

最后求出所有的种类数加减就可以了

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e6+6;
const int mod = 1e9+7;
ll n, m;
ll dp[maxn][2];int main()
{cin >> n >> m;if(n > m) swap(n, m);// 1 black  0 whitedp[1][1] = 1, dp[1][0] = 1;dp[2][1] = 2, dp[2][0] = 2;for(int i = 3; i <= m; i ++){dp[i][1] = dp[i-1][0]%mod + dp[i-2][0]%mod;dp[i][1] %= mod;dp[i][0] = dp[i-1][1]%mod + dp[i-2][1]%mod;dp[i][0] %= mod;}cout << ((dp[m][0]+dp[m][1])%mod + (dp[n][0] + dp[n][1])%mod - 2)%mod << endl;return 0;
}

C. Ivan the Fool and the Probability Theory相关推荐

  1. Codeforces Round #594 (Div. 2) C. Ivan the Fool and the Probability Theory 思维 + dp

    文章目录 题意: 思路 题意: 思路 一开始找规律,表都打好了,没找出来.. 找规律还是适合让队友来. 先考虑第一行,我们先计算第一行的方案数,设f[i][j]f[i][j]f[i][j]表示到了ii ...

  2. A. Ivan the Fool and the Probability Theory

    A. Ivan the Fool and the Probability Theory Problem - 1239A - Codeforces 题意:给定一个n*m的矩阵,每个格子可以涂白色与黑色两 ...

  3. Codeforces Round #594 (Div. 2) Ivan the Fool and the Probability Theory(DP)

    题目链接:https://codeforces.com/contest/1248/problem/C 题目大意:n*m的长方形中,一共有两种颜色,问每一个块相邻最多有一个与之相同颜色的块的染色方案数 ...

  4. Ivan the Fool and the Probability Theory(思维+dp)

    题目链接 题目大意 给定一个 n ∗ m n*m n∗m 的方格图,每个格子可以被染成黑色或白色,且与其相邻的格子(上,下,左,右)中至多只有一个与其颜色相同.求方案数. 思路: 这个时候大家自己画一 ...

  5. Codeforces #594 (Div. 1) A. Ivan the Fool and the Probability Theory(DP)

    原题链接:https://codeforces.com/contest/1239/problem/A 大佬用来热身的小题 而我却迟迟想不出来 当n和m都为1的时候显然只有两种情况 当n为1,m不为1的 ...

  6. Ivan the Fool and the Probability Theory-Codeforces Round #594 (Div. 2)-C题(dp+思维)

    Ivan the Fool and the Probability Theory-Codeforces Round #594 (Div. 2)-C题(dp+思维) time limit per tes ...

  7. C. Ivan the Fool and the Probability Theory------思维+dp

    第二天叫醒我的不是闹钟,是梦想! Recently Ivan the Fool decided to become smarter and study the probability theory. ...

  8. 今天开始学模式识别与机器学习Pattern Recognition and Machine Learning (PRML),章节1.2,Probability Theory (下)

    今天开始学Pattern Recognition and Machine Learning (PRML),章节1.2,Probability Theory (下) 今天把1.2写完,这一节讲了很多重要 ...

  9. 今天开始学模式识别与机器学习Pattern Recognition and Machine Learning (PRML)书,章节1.2,Probability Theory (上)

    Pattern Recognition and Machine Learning (PRML)书,章节1.2,Probability Theory (上) 这一节是浓缩了整本书关于概率论的精华,突出一 ...

最新文章

  1. SecureCRT安装的注意事项
  2. VTK:图片之MarkKeypoints
  3. 计算机事业单位专技岗考什么区别,事业单位管理岗和专技岗的区别(从待遇等角度)...
  4. 测试回收站测试回收站测试回收站测试回收站测试回收站测试回收站测试回收站测试回收站
  5. linux 脚本 发送邮件,shell 脚本发送邮件
  6. mysql 严格模式_MySQL 开启/关闭 严格模式(Strict Mode)
  7. Python错误,pip安装包或更新时因超时而报错误
  8. 【API进阶之路】研发需求突增3倍,测试团队集体闹离职
  9. linux系统 安卓系统安装教程,Linux系统下安装android sdk的方法步骤
  10. NUC1178 Kickdown【水题】
  11. 【Todo】【转载】Scala中Array, List, Tuple的区别
  12. C++string中用于查找的find系列函数浅析
  13. Ubuntu 全部命令
  14. ConstraintLayout 属性详解 和Chain的使用
  15. 仿TT语音,语音游戏陪玩APP源码,社交属性强大
  16. winform打印html文件,c# 如何实现web打印插件
  17. 密码破解---实验七:本地系统密码破解
  18. yoctoqemu(十二)openssh
  19. 配置samba服务器全过程
  20. unity 多台 显示器 控制_AB罗克韦尔自动化Micro820可编程逻辑控制器系统型号及功能介绍...

热门文章

  1. java getrealpath_JSP中 request.getRealPath(/xx/yy) 方法提示已经过时的替代方法
  2. 电脑网页打不开,更改DNS地址(Win10)
  3. jQuery 效果 - 滑动 slideDown()与slideUp()与slideToggle()
  4. 1.设计一个抽奖程序,程序通过随机方式产生中奖序号。程序可以设置序号包含数字位数 和最大序号,一次抽取几个中奖序号(最少 1 个序号,最多不超过 2 个序号)和总共中奖 人数(最少 5 人)。抽奖过程
  5. 【KMP】从原理上详解next数组和nextval数组
  6. (0x80040154): 没有注册类别 (异常
  7. kafka消费不到消息原因
  8. SAMSUNG三星停产SDRAM 及替换品牌型号推荐
  9. 根据 md5 校验码,检测文件是否被修改
  10. spring-boot-starter-data-elasticsearch整合elasticsearch 6.x实现高亮highlighter解决办法