BZOJ2958 序列染色
果然清华集训的题目。。。显然的DP题但是不会做。。。
我们令f[i][j][w]表示状态方程
w表示到了字符串的第w个
i = 0, 1, 2分别表示k个B和k个W都没填上、k个B填上了k个W没填上、k个B和k个W都填上了三种状态
j = 0, 1分别表示第w位上填B/W
于是方程就比较容易列出来了,注意要用到容斥原理
/**************************************************************
Problem: 2958
User: rausen
Language: C++
Result: Accepted
Time:652 ms
Memory:33032 kb
****************************************************************/ #include <cstdio> using namespace std;
const int N = ;
const int mod = 1e9 + ; int n, k;
char st[N];
int s0[N], s1[N], f[][][N]; void read_in() {
int i;
char ch = getchar();
while (ch != 'W' && ch != 'B' && ch != 'X')
ch = getchar();
for (i = ; i <= n; ++i)
st[i] = ch, ch = getchar();
} inline int calc(char c, int *s, int i, int t) {
if (i < k || st[i - k] == c || s[i] - s[i - k]) return ;
return f[t - ][i == k ? : - t][i - k];
} int main() {
int i;
scanf("%d%d", &n, &k);
read_in();
f[][][] = ;
for (i = ; i <= n; ++i) {
s0[i] = s0[i - ] + (st[i] == 'W');
s1[i] = s1[i - ] + (st[i] == 'B');
if (st[i] != 'W') {
f[][][i] = (0ll + f[][][i - ] + f[][][i - ] - calc('B', s0, i, ) + mod) % mod;
f[][][i] = (0ll + f[][][i - ] + f[][][i - ] + calc('B', s0, i, )) % mod;
f[][][i] = (0ll + f[][][i - ] + f[][][i - ]) % mod;
}
if (st[i] != 'B') {
f[][][i] = (0ll + f[][][i - ] + f[][][i - ]) % mod;
f[][][i] = (0ll + f[][][i - ] + f[][][i - ] - calc('W', s1, i, ) + mod) % mod;
f[][][i] = (0ll + f[][][i - ] + f[][][i - ] + calc('W', s1, i, )) % mod;
}
}
printf("%d\n", (f[][][n] + f[][][n]) % mod);
return ;
}
(p.s. Orz 江哥...)
BZOJ2958 序列染色的更多相关文章
- bzoj2958: 序列染色(DP)
2958: 序列染色 题目:传送门 题解: 大难题啊(还是我太菜了) %一发大佬QTT 代码: #include<cstdio> #include<cstring> #incl ...
- BZOJ2958 序列染色(动态规划)
令f[i][0/1/2][0/1]表示前i位,不存在满足要求的B串和W串/存在满足要求的B串不存在W串/存在满足要求的B串和W串,第i位填的是B/W的方案数.转移时考虑连续的一段填什么.大讨论一波后瞎 ...
- bzoj2958: 序列染色&&3269: 序列染色
DP这种东西,考场上就只能看命了.. #include<cstdio> #include<iostream> #include<cstring> #include& ...
- BZOJ:2958 序列染色 DP
bzoj2958 序列染色 题目传送门 Description 给出一个长度为N由B.W.X三种字符组成的字符串S,你需要把每一个X染成B或W中的一个. 对于给出的K,问有多少种染色方式使得存在整数a ...
- BZOJ 1006 [HNOI2008] 神奇的国度(简单弦图的染色)
题目大意 K 国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即 AB 相互认识,BC 相互认识,CA 相互认识,是简洁高效的.为了巩固三角关系,K 国禁止四边关系,五边关系等 ...
- [BZOJ5306][HAOI2018]染色
bzoj luogu Description 给一个长度为\(n\)的序列染色,每个位置上可以染\(m\)种颜色.如果染色后出现了\(S\)次的颜色有\(k\)种,那么这次染色就可以获得\(w_k\) ...
- Solution -「HAOI 2018」「洛谷 P4491」染色
\(\mathcal{Description}\) Link. 用 \(m\) 种颜色为长为 \(n\) 的序列染色,每个位置一种颜色.对于一种染色方案,其价值为 \(w(\text{出现恰 ...
- 2016 Multi-university training contest
day 1 A 给G,w(e)1M(diff),|V|100K,|E|1M,求 MST MST上任意两点间距离的期望 显然MST唯一 E(dis(u,v))可以通过计算每条边的贡献加出来 B n个并行 ...
- bzoj1006 [HNOI2008]神奇的国度
1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 2304 Solved: 1043 Description ...
随机推荐
- SVN库迁移整理方法----官方推荐方式
以下是subversion官方推荐的备份方式. 关闭所有运行的进程,并确认没有程序在访问存储库(如 httpd.svnserve 或本地用户在直接访问). 备份svn存储库 #压缩备份 svnadmi ...
- Redundant Paths---poj3177(双连通分量)
题目链接:http://poj.org/problem?id=3177 题意:有n个牧场,Bessie 要从一个牧场到另一个牧场,要求至少要有2条独立的路可以走.现已有m条路,求至少要新建多少条路,使 ...
- Day20 javaWeb监听器和国际化
day20 JavaWeb监听器 三大组件: Servlet Listener Filter Listener:监听器 初次相见:AWT 二次相见:SAX 监听器: 它是一个接口,内容由我们来 ...
- centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB 注意down掉网卡的方法 nginx效率没有LVS高 ipvsadm命令集 测试LVS方法 第三十三节课
centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB ...
- C++循环的内存释放问题?
针对http://wenku.baidu.com/view/56d732ee856a561252d36ff2.html的内容测试一下. #include "A.h" #includ ...
- 驼峰命名和下划线命名互转php实现
驼峰命名和下划线命名经常需要互转,下面提供两种php的实现方式.第一种方法效率相对差一些,实现方式如下: //驼峰命名转下划线命名 function toUnderScore($str) { $dst ...
- HDU1695:GCD(容斥原理+欧拉函数+质因数分解)好题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695 题目解析: Given 5 integers: a, b, c, d, k, you're to ...
- 开启Virtualization Technology
怎样开启Virtualization Technology功能 在Win7 或linux x64位系统里装vm,然后新建虚机安装Windows Server 2008 R2 提示一些警告,无法新建虚拟 ...
- 001-java虚拟机的概念
https://blog.csdn.net/yfqnihao/article/details/8289363 1.什么是java虚拟机.(你以为你知道,如果你看我下面的例子,你会发现你其实不知道) ( ...
- RabittMQ实践(一): RabbitMQ的安装、启动
安装: 启动监控管理器:rabbitmq-plugins enable rabbitmq_management 关闭监控管理器:rabbitmq-plugins disable rabbitmq_ ...