Educational Codeforces Round 51 (Rated for Div. 2)
时间:2019-11-18
本文章向大家介绍Educational Codeforces Round 51 (Rated for Div. 2),主要包括Educational Codeforces Round 51 (Rated for Div. 2)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
http://codeforces.com/contest/1051
随手捞到的以前没有补完的场,
D. Bicolorings
一个dp题,题意是,有一个2*n的矩阵,其中每个色块可黑可白,重要的是里面的连通块数,题目将给出n和k,让你求恰好有k个连通块的情况下的方案数。
从列来考虑,假设已知前一个矩阵的最后一列,和其方案数,(可以用00、01、10、11的二进制数来表示)那么当前dp[i][K][0]表示第i列有K个连通块且末尾列为00的方案数
前一列可能是00、01、10、11其中任何一个,分别加上00时连通块个数的状态为不变、+1、+1、+1,于是有dp[i][K][0] = dp[i-1][K][0] + dp[i-1][K-1][1] + dp[i-1][K-1][2] + dp[i-1][K-1][3];
其他情况类比推理一下就好了,要注意的地方是取模,分分钟爆int所以每次加法都要取一次mod最后出结果的时候也是
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int mod =998244353 ; 5 int n,T,k,dp[1200][2400][5]; 6 ll temp; 7 8 int main(){ 9 10 cin>>n>>k; 11 dp[1][1][0] = dp[1][1][3] = dp[1][2][1] = dp[1][2][2] = 1; 12 13 for(int i = 2;i <= n;++i){ 14 for(int k = 1;k <= (i<<1);++k){ 15 temp = ((dp[i-1][k][0]+dp[i-1][k][1])%mod+dp[i-1][k][2])%mod+dp[i-1][k-1][3]; 16 temp = temp % mod; 17 dp[i][k][0] = temp; 18 //第i列为00时 连通块为k可以由第i-1列的四个状态得到,接下来01,10,11时同理 19 temp =( dp[i-1][k-1][0]+dp[i-1][k][1])%mod+dp[i-1][k-1][3]; 20 temp%=mod; 21 if(k>=2)temp+=dp[i-1][k-2][2],temp%=mod; 22 temp = temp % mod; 23 dp[i][k][1] = temp; 24 // 25 temp = (dp[i-1][k-1][0]+dp[i-1][k][2])%mod+dp[i-1][k-1][3]; 26 temp%=mod; 27 if(k>=2)temp+=dp[i-1][k-2][1],temp%=mod; 28 temp = temp % mod; 29 dp[i][k][2] = temp; 30 // 31 temp = ((dp[i-1][k-1][0]+dp[i-1][k][1])%mod+dp[i-1][k][2])%mod+dp[i-1][k][3]; 32 temp = temp % mod; 33 dp[i][k][3] = temp; 34 } 35 } 36 ll ans = ((dp[n][k][0] + dp[n][k][1]) %mod+ dp[n][k][2] )%mod+ dp[n][k][3];ans%=mod; 37 cout<<ans<<endl; 38 }
原文地址:https://www.cnblogs.com/h404nofound/p/11853021.html
- LINQ to SQL(4):OR设计器
- 在不同浏览器都实用的各窗口大小获取方法
- JavaScript获得对象属性个数的方法
- 设计模式专题(十一)——抽象工厂模式
- Canvas 图形组合方式
- HTML5 FileReader接口学习笔记
- 如何用BBED使Offline的数据文件Online
- Entity Framework4.3 Code-First基于代码的数据迁移讲解1.建立一个最初的模型和数据库 2.启动Migration(数据迁移)3.第一个数据迁移4.订制的数据迁移4.动态
- 轻松初探Python(六)—函数
- css3实现圆角边框渐变
- 设计模式专题(十二)——状态模式
- HTML5新增属性学习笔记
- HTML5标签学习笔记
- 设计模式专题(十三) ——备忘录模式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法