染色dp(确定一行就可行)
题:https://codeforces.com/contest/1027/problem/E
题意:给定n*n的方格,可以染黑白,要求相邻俩行”完全“不同或完全相同,对于列也是一样。然后限制不能拥有k面积具有相同颜色的格子
分析:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int M=1e3+;
const int mod= ;
ll dp[M][M];///前i个存在最多连续j个相同的格子颜色
void init(){
dp[][]=1ll;
dp[][]=1ll;
for(int i=;i<=;i++){
dp[i][i]=dp[i-][i-]*2ll%mod;///因为[i][i]就相当于没限制 ,所以直接每个位置俩个选择
dp[][i]=1ll;
}
for(int i=;i<=;i++){
for(int j=;j<=i;j++){
dp[j][i]=dp[j][j];///不受限制的部分
}
///当前的j位置,可以选择与前一个位置相同,也可以选择与后一个相同
///若选择不相同,那么就在这个位置的贡献加上前一个位置的dp值
///若选择相同,那么就把这个位置和前一个位置看出一整体,然后重复上述动作;
for(int j=i+;j<=;j++)
dp[j][i]=(2ll*dp[j-][i]%mod-dp[j-i-][i]+mod)%mod; }
}
int main(){
init();
int n,k;
cin>>n>>k;
ll ans=;
for(int i=;i<=n;i++){
ll temp=dp[n][i]-dp[n][i-];
temp=temp*(dp[n][min((k-)/i,n)])%mod;
ans=(ans+temp)%mod;
}
ans*=;
cout<<ans%mod<<endl;
return ;
}
题:https://codeforces.com/contest/1248/problem/C
题意:黑白染色,限制:每个单元格最多具有一个相同颜色的相邻单元格
分析:确定了一行一列就可定下整个图
考虑dp[i][0]为第i个填白色的方案数 所以易得:dp[i][0]=dp[i-2][0]+dp[i-1][1]
考虑dp[i][1]为第i个填黑色的方案数 所以易得:dp[i][1]=dp[i-2][1]+dp[i-1][0]
直接合并:dp[i]=dp[i-1]+dp[i-2];
#include <bits/stdc++.h>
#define fo(i,a,b) for(int i=a;i<=b;++i)
#define fod(i,a,b) for(int i=a;i>=b;--i)
using namespace std;
typedef long long ll;
const int M=1e5+;
const int mod=1e9+;
ll f[M];
int main(){
int n,m;
scanf("%d%d",&n,&m);
f[]=;
f[]=;
fo(i,,max(n,m))
f[i]=(f[i-]+f[i-])%mod;
printf("%I64d",((f[n]+f[m])%mod-+mod)%mod);///又因为当行和列拼在一起时会导致格子(1,1),(1,2),(2,1) 三个格子同色,所以我们的答案是f(N)+f(M)−2。 return ;
}
染色dp(确定一行就可行)的更多相关文章
- Educational Codeforces Round 62 (Rated for Div. 2)E(染色DP,构造,思维,组合数学)
#include<bits/stdc++.h>using namespace std;const long long mod=998244353;long long f[200007][2 ...
- 【xsy1172】 染色 dp
题目大意:现有$n$条排成一行的木板,每个木板有一个目标颜色.你每次能将一个区间内的木板分别染成它们的目标颜色,而这次染色的代价为这个区间内不同目标颜色的木板的数量的平方.问将全部木板染成目标颜色的最 ...
- BZOJ:2958 序列染色 DP
bzoj2958 序列染色 题目传送门 Description 给出一个长度为N由B.W.X三种字符组成的字符串S,你需要把每一个X染成B或W中的一个. 对于给出的K,问有多少种染色方式使得存在整数a ...
- 【POJ 1112】Team Them Up!(二分图染色+DP)
Description Your task is to divide a number of persons into two teams, in such a way, that: everyone ...
- poj-1112 (二分图染色+dp分组)
#include <iostream> #include <algorithm> #include <cstring> using namespace std; ; ...
- 5.29 省选模拟赛 树的染色 dp 最优性优化
LINK:树的染色 考场上以为这道题要爆蛋了 没想到 推出正解来了. 反正是先写了爆搜的 爆搜最近越写越熟练了 容易想到dp 容易设出状态 f[i][j]表示以i为根的子树内白色的值为j此时黑色的值怎 ...
- bzoj2958: 序列染色(DP)
2958: 序列染色 题目:传送门 题解: 大难题啊(还是我太菜了) %一发大佬QTT 代码: #include<cstdio> #include<cstring> #incl ...
- DP学习记录Ⅰ
DP学习记录Ⅱ 前言 状态定义,转移方程,边界处理,这三部分想好了,就问题不大了.重点在状态定义,转移方程是基于状态定义的,边界处理是方便转移方程的开始的.因此最好先在纸上写出自己状态的意义,越详细越 ...
- 【原创】【状态压缩DP】POJ3254 Corn Fields【新手向】
一开始根本不会状压dp,上网各种找题解,但发现他们写的都很......反正我作为一个没有接触过状态压缩的,根本看不懂! 然后看了好多状态压缩的题的题解,总结了一下思路,思路很重要,有了思路转换成计算机 ...
随机推荐
- Codeforces 1299A/1300C - Anu Has a Function
题目大意: 给定一种函数F(x,y)=(x|y)-y,| 即按位或运算 给定一个长度为n的数组a[1],a[2],a[3]...a[n] 可以重新排列数组a,使得 F ( ...... F ( F ( ...
- JavaEE--JNDI(下,实现)
参考:https://blog.csdn.net/ouyida3/article/details/46699023 https://www.landui.com/help/show-6158.htm ...
- xhell ctrl+s 假死
如题. ctrl+q 即可接触 假死状态. 记录下
- UML-逻辑架构精化
向下请求:Facade模式 向上返回:观察者模式 不局限于上图中指定的层使用相应模式,其他层也可以使用. 另外,尽量不要出现“公共业务模块”,设计时尽量做好系统拆分.否则,一旦修改公共代码,可能会影响 ...
- 寒假day08
今天爬了部分与人才动态相关的数据,还刷了剑指offer的部分算法题
- python format输出
http://www.cnblogs.com/nulige/p/6115793.html 2.Format 方式 [[fill]align][sign][#][0][width][,][.precis ...
- Maven - No plugin found for prefix 'tomcat7' in the current project
问题发现: 在构建Maven项目的时候,出现了No plugin found for prefix 'tomcat7' in the current project的错误. 是需要在Maven的Pom ...
- 多种类型SQL注入
前言 发现MYSQL手注注入方式用得多了,几乎都快忘记其它数据库注入的方式了,这里不讲绕过姿势和写shell,毕竟网上很多前辈都给了方法,我只讲一些基本的注入方式(只是记录一下各自的特性,记下来方便以 ...
- IE浏览器F12调试模式不能使用或报错以及安装程序遇到错误0x80240037的解决办法
记录一下,方便以后查找 IE浏览器F12调试模式不能使用: 需要下载补丁: 64位系统 然后下载安装,就能解决问题. 要是在安装时遇到出现: 安装程序遇到错误 0x80240037 解决方式 最后 ...
- UML-类图-构造型应用场景是什么?
1.什么是构造型? 抽象出来的标准的模型元素. 2.有哪些? 1.预定义的,如:<<destory>> 2.自定义的 3.自定义