bzoj2958: 序列染色(DP)
2958: 序列染色
题目:传送门
题解:
大难题啊(还是我太菜了)
代码:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#define mod 1000000007
using namespace std;
typedef long long LL;
int n,k;
int sb[],sw[];
LL f[][][];//前i位状态为j第i为为k的方案数 (k=0 为B k=1 为w)
//j==0 没有k个B和k个W
//j==1 只有k个B
//j==2 有k个B和k个W
char st[];
int main()
{
scanf("%d%d",&n,&k);scanf("%s",st+);
memset(sb,,sizeof(sb));memset(sw,,sizeof(sw));
for(int i=;i<=n;i++)
{
sb[i]=sb[i-];sw[i]=sw[i-];
if(st[i]=='B')sb[i]++;
else if(st[i]=='W')sw[i]++;
}
memset(f,,sizeof(f));
f[][][]=;//B在左边所以先放个W...
for(int i=;i<=n;i++)
{
if(st[i]!='W')for(int j=;j<=;j++)f[i][j][]=(f[i-][j][]+f[i-][j][]+mod)%mod;
if(st[i]!='B')for(int j=;j<=;j++)f[i][j][]=(f[i-][j][]+f[i-][j][]+mod)%mod;
if(i<k)continue;
if(st[i]!='W' && sw[i]==sw[i-k])
{
f[i][][]=(f[i][][]+f[i-k][][]+mod)%mod;
f[i][][]=(f[i][][]-f[i-k][][]+mod)%mod;
}
if(st[i]!='B' && sb[i]==sb[i-k])
{
f[i][][]=(f[i][][]+f[i-k][][]+mod)%mod;
f[i][][]=(f[i][][]-f[i-k][][]+mod)%mod;
}
}
printf("%lld\n",(f[n][][]+f[n][][]+mod)%mod);
return ;
}
bzoj2958: 序列染色(DP)的更多相关文章
- BZOJ:2958 序列染色 DP
bzoj2958 序列染色 题目传送门 Description 给出一个长度为N由B.W.X三种字符组成的字符串S,你需要把每一个X染成B或W中的一个. 对于给出的K,问有多少种染色方式使得存在整数a ...
- BZOJ2958 序列染色(动态规划)
令f[i][0/1/2][0/1]表示前i位,不存在满足要求的B串和W串/存在满足要求的B串不存在W串/存在满足要求的B串和W串,第i位填的是B/W的方案数.转移时考虑连续的一段填什么.大讨论一波后瞎 ...
- BZOJ2958 序列染色
果然清华集训的题目...显然的DP题但是不会做... 我们令f[i][j][w]表示状态方程 w表示到了字符串的第w个 i = 0, 1, 2分别表示k个B和k个W都没填上.k个B填上了k个W没填上. ...
- bzoj2958: 序列染色&&3269: 序列染色
DP这种东西,考场上就只能看命了.. #include<cstdio> #include<iostream> #include<cstring> #include& ...
- codevs 1962 马棚问题--序列型DP
1962 马棚问题 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 每天,小明和他的马外出,然后他们一边跑一边玩耍.当他们结束 ...
- 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 ...
- 括号序列的dp问题模型
括号序列的dp问题模型 Codeforces314E ◦给定一个长度为n的仅包含左括号和问号的字符串,将问号变成左括号或 右括号使得该括号序列合法,求方案总数. ◦例如(())与()()都是合法的括号 ...
- [BZOJ 3992] [SDOI 2015] 序列统计(DP+原根+NTT)
[BZOJ 3992] [SDOI 2015] 序列统计(DP+原根+NTT) 题面 小C有一个集合S,里面的元素都是小于质数M的非负整数.他用程序编写了一个数列生成器,可以生成一个长度为N的数列,数 ...
- 5.13 省选模拟赛 优雅的绽放吧,墨染樱花 多项式 prufer序列 计数 dp
LINK:优雅的绽放吧,墨染樱花 当时考完只会50分的做法 最近做了某道题受到启发 故会做这道题目了.(末尾附30分 50分 100分code 看到度数容易想到prufer序列 考虑dp统计方案数. ...
随机推荐
- 导入不同业务数据通过Excel实现
很多公司都用到了老系统移植到新系统,数据自然也需要迁移,这个解决方案之一就是使用Excel文件导入. 结合公司实现,然后简单写了个Demo. (PS:去找朋友本想着花几十分钟弄出来炫耀一波,结果花了三 ...
- [原创]PM2使nodejs应用随系统启动
1.安装 npm install pm2 -gd 2.启动 pm2 start ./bin/www 3.pm2 save 4.pm2 startup 5.pm2 save 注:上面几个步骤有几个坑: ...
- C#调用Java的WebService出现500 服务器错误
最近在用C#调用Java写的WebService时,发现老是返回500 服务器错误,到底什么原因一直找不出来, 后来google了以后,找到国外的http://stackoverflow.com站点已 ...
- MxNet教程:使用一台机器训练1400万张图片
官网链接:http://mxnet.readthedocs.io/en/latest/tutorials/imagenet_full.html Training Deep Net on 14 Mill ...
- node phantomjs linux 安装问题
本地为macos系统,phantomjs安装一直没问题:后来采用了phantom-pool,增加了连接池,安装也没有问题.这时候不需要安装phantom了,因为phantom-pool是依赖于phan ...
- Apache_安装
1.下载安装包 网址:https://www.apachelounge.com/download/,下载你需要的安装包 2.解压文件到指定安装目录 3.修改配置文件 使用文本编辑器打开配置文件 con ...
- idea搭建第一个springboot
1.打开idea开发工具,在菜单栏选择File-->New-->Project...-->Spring Initializer说明:社区版的idea是没有Spring Initial ...
- js与Jquery的对比
// document.getElementById("divCommit").style.display="none";// document.g ...
- day002 计算机基础之 操作系统和编程语言的分类
      今天主要针对计算机基础中的操作系统和编程语言的分类进行了讲解. 操作系统   ...
- 为什么on用的时候会失效?
困扰了我一个很久的问题今天终于得带解决了,关于 on 的 用法: $("#hasLabels .link").on("click",function(){ .. ...