bzoj2958: 序列染色&&3269: 序列染色
DP这种东西,考场上就只能看命了。。
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
const int mod=1e9+; LL f[][][];//f[i][j][k]表示第i个位置 j=0没有连续K个的B或W,j=1只有B有,j=2 BW都有 k表示放B还是W
int b[],w[];
char ss[];
int main()
{
int n,K;
scanf("%d%d",&n,&K);
scanf("%s",ss+);
for(int i=;i<=n;i++)
{
b[i]=b[i-];w[i]=w[i-];
if(ss[i]=='B')b[i]++;
else if(ss[i]=='W')w[i]++;
}
memset(f,,sizeof(f));f[][][]=;
for(int i=;i<=n;i++)
{
if(ss[i]=='B'||ss[i]=='X')
{
f[i][][]=(f[i][][]+(f[i-][][]+f[i-][][])%mod)%mod;
f[i][][]=(f[i][][]+(f[i-][][]+f[i-][][])%mod)%mod;
f[i][][]=(f[i][][]+(f[i-][][]+f[i-][][])%mod)%mod;
}
if(ss[i]=='W'||ss[i]=='X')
{
f[i][][]=(f[i][][]+(f[i-][][]+f[i-][][])%mod)%mod;
f[i][][]=(f[i][][]+(f[i-][][]+f[i-][][])%mod)%mod;
f[i][][]=(f[i][][]+(f[i-][][]+f[i-][][])%mod)%mod;
}
if(i<K)continue;
if((ss[i]=='B'||ss[i]=='X')&&w[i]==w[i-K])
{
f[i][][]=(f[i][][]+f[i-K][][])%mod;
f[i][][]=(f[i][][]-f[i-K][][]+mod)%mod;
}
if((ss[i]=='W'||ss[i]=='X')&&b[i]==b[i-K])
{
f[i][][]=(f[i][][]+f[i-K][][])%mod;
f[i][][]=(f[i][][]-f[i-K][][]+mod)%mod;
}
}
printf("%lld\n",(f[n][][]+f[n][][])%mod);
return ;
}
bzoj2958: 序列染色&&3269: 序列染色的更多相关文章
- r语言之生成规则序列,规则序列函数及用法
		
在生成序列时,“:”的优先级最高 (1)从1到20的整数序列: > 1:20 [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 (2) ...
 - firedac二进制序列和JSON序列的对比
		
firedac二进制序列和JSON序列的对比 以同样大小的一个数据集的数据,作为测试的数据. 以JSON序列后的数据体积是4958字节. 以二进制序列后的数据体积是3044字节. 4958/3044= ...
 - Gym 101064 D Black Hills golden jewels 【二分套二分/给定一个序列,从序列中任意取两个数形成一个和,两个数不可相同,要求求出第k小的组合】
		
D. Black Hills golden jewels time limit per test 2 seconds memory limit per test 256 megabytes input ...
 - Python——序列封包与序列解包
		
一.序列封包与序列解包 把多个值赋给一个变量时,Python会自动的把多个值封装成元组,称为序列封包. 把一个序列(列表.元组.字符串等)直接赋给多个变量,此时会把序列中的各个元素依次赋值给每个变量, ...
 - 扩增子分析解读4去嵌合体 非细菌序列 生成代表性序列和OTU表
		
本节课程,需要先完成 扩增子分析解读1质控 实验设计 双端序列合并 2提取barcode 质控及样品拆分 切除扩增引物 3格式转换 去冗余 聚类 先看一下扩增子分析的整体流程,从下向上逐层分析 分 ...
 - mysql 序列与pg序列的比较
		
mysql序列(这里只谈innodb引擎): 在使用mysql的AUTO_INCREMENT时,使用AUTO_INCREMENT的字段必须建有索引,也可以为索引的一部分.当没有索引时会报错: ...
 - [YY]已知逆序列求原序列(二分,树状数组)
		
在看组合数学,看到逆序列这个概念.于是YY了一道题:已知逆序列,求出原序列. 例子: 元素个数 n = 8 逆序列 a={5,3,4,0,2,1,1,0} 则有原序列 p={4,8,6,2,5,1,3 ...
 - POJ 2528 区间染色,求染色数目,离散化
		
Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 47905 Accepted: 13903 ...
 - 一个序列是否可能是push序列的pop序列
		
输入:两个序列A.B,A作栈的push序列,判断B是否可能是A的pop序列. #include<iostream> #include<stack> using namespac ...
 
随机推荐
- Jenkins自动化部署.netcore程序
			
一.安装jenkins 百度一下 二.构建前的准备 搭建好.net core2.0的环境,下载:https://aka.ms/dotnetcore-2-windowshosting (,net co ...
 - SQL Server对数据进行添加
			
下面介绍一下SQL Server如何往数据库中加入数据. <!-- 添加主人信息 --> <form action="add_Admin.jsp" method= ...
 - python2打印list中文内容防乱码
			
zh_ls = ['人','民'] print str(zh_ls).decode("string_escape")
 - windows 实时性
			
在硬件编程时,大部分非智能硬件并没有主动通知反馈功能,需要PC主动轮询状态寄存器去查询硬件状态.对于运动类控制器,查询的时机(间隔)在一定程度上影响着准确率与系统负载.即使不考虑系统负载,在1000H ...
 - NOPI读取Word模板并保存
			
安装NPOI 可以在 程序包管理器控制台中输入 PM> Install-Package NPOI 会下载最新版本NPOI ----------------------------引用了NPOI- ...
 - 将 GNOME 默认的界面切换动画功能关闭
			
gsettings set org.gnome.desktop.interface enable-animations false
 - phpstorm 使用
			
常用快捷 ctrl + / 单行注释 Alt+1 隐藏左侧任务栏 设置 1:control+shift+A功能可以搜索对应功能,把mouse:Change font size(Zoom) ...的按钮 ...
 - Xshell连接linux服务器不成功的乌龙问题
			
一般xshell连接linux服务器不成功有以下几个问题: linux防火墙拦截,导致Xshell不能访问linux 操作方法: firewalld(CentOS7):启动 :systemctl st ...
 - android keystore的生成和使用
			
android要求所有的程序必须有签名,否则就不会安装该程序.在我们开发过程中,adt使用debug keystore,在 preference->android->buid中设置.deb ...
 - SSO 单点登录解决方案
			
转自:http://www.blogjava.net/Jack2007/archive/2014/03/11/191795.html 1 什么是单点登陆 单点登录(Single Sign O ...