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 ...
随机推荐
- html5 web worker学习笔记(记一)
(吐槽:浏览器js终于进入多线程时代!) 以前利用setTimeout.setInterval等方式的多线程,是伪多线程,本质上是一种在单线程中进行队列执行的方式.自从html5 web worker ...
- ★Java语法(六)——————————分支语句
1. if 语句 格式用法: if(布尔表达式) { 语句: } 2. if……else 语句 格式用法: if(表达式) { 语句1: } else { 语句2: } 3.if……else i ...
- 【Oracle】解决oracle sqlplus 中上下左右backspace不能用
一. 解决输入 BACKSPACE 键变成 ^h 的问题 #su - oracle $stty erase ^h. 要永久生效,可以加入到用户环境配置文件.bash_profile中(vi .ba ...
- C#判断文件是否存在 //创建txt文件
if(System.IO.File.Exists(@"")) { } if (System.IO.File.Exists(HttpRuntime.AppDomainAppPath ...
- ionic Plugin插件,与原生app端交互,ionic端代码
创建plugins 目录 definitions.ts文件 definitions.ts文件: import {Plugin} from '@capacitor/core/dist/esm/defin ...
- 团体程序设计天梯赛-练习集-L1-045. 宇宙无敌大招呼
L1-045. 宇宙无敌大招呼 据说所有程序员学习的第一个程序都是在屏幕上输出一句“Hello World”,跟这个世界打个招呼.作为天梯赛中的程序员,你写的程序得高级一点,要能跟任意指定的星球打招呼 ...
- BZOJ 3036: 绿豆蛙的归宿 期望 + 拓扑排序
随着新版百度空间的下线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿.给出一个有向无环的连通图,起点为1终点为N,每条边都有一个长度.绿豆蛙从起点出发,走向终点. 到达每一个顶点时,如果有K条离 ...
- 7.5 pragma 指令
第1个pragma禁用了我们感兴趣的特别警告,第2个恢复了它.禁用尽可能小的一段代码的警告是一个良好的做法,以便你不会错过任何真正应该修复的错误.如果你想在单独一行上禁用或恢复多个警告,那么只需用逗号 ...
- 【数据结构】4.1图的创建及DFS深度遍历(不完善)
声明:本代码仅供参考,根本就不是正确代码(至少在我看来,有很多BUG和不完美的地方) 图的存储方式选择为邻接表,并且headNode只是来存储一个链表的Node首地址额 总之这个代码写的很垃圾呀很垃圾 ...
- java实现根据高德地图API接口进行地址位置解析,将地址转化为经纬度
原创文章,转载请注明,欢迎评论和更改. 1,所需额外ar包,import net.sf.json.JSONObject; 2,完整源代码代码 package com.travel.util; impo ...