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 ...
随机推荐
- C# 对象克隆,DataTable转LIST
public class ConvertHelper<T> where T : new() { private static string module = "ConvertHe ...
- 简单ajax库
function TuziAjax(reqType,url,fnoK, fnFail) { var xmlHttp = null; if (window.XMLHttpRequest) { xmlHt ...
- ES6 Promise(2)
Promise的兴起,是因为异步方法调用中,往往会出现回调函数一环扣一环的情况.这种情况导致了回调金字塔的出现.不仅代码写起来费劲不美观,而且问题复杂的时候,阅读代码的人也难以理解. db.save( ...
- android黑科技系列——防自动抢红包外挂原理解析
一.前言 春节过年发个红包本来就是为了讨个喜庆,朋友亲戚之间的关系交流,但是现在随着技术变革,抢红包插件越来越多,导致现在不太愿意发红包了,特别是在一个多人群里,潜水的非常多,但是丢个红包瞬间就没了, ...
- ajax 三级联动写法
主页面代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- ★Java语法(四)——————————运算符
使用除法“/” ,要特别注意数据类型的问题.若被除数和除数都是整形,且被除数不能被除数整除时,这时输出的结果为整数,(即整形数/整形数=整形数),这是因为整形变量无法保存小数点后面的数据所致,要特别 ...
- DNN结构演进History—CNN-GoogLeNet :Going Deeper with Convolutions
抄袭了一片文章,进行少量修改:http://www.gageet.com/2014/09203.php 作者:Christian Szegedy( google ) 刘伟(北卡罗来纳 ...
- Metadata
元数据是关于数据的组织.数据域及其关系的信息,简言之,元数据就是关于数据的数据. Metadata is "data [information] that provides informat ...
- vue-router同路由地址切换无效解决
本来还想写的,一搜就有现成的,算了: http://blog.csdn.net/peng_guan/article/details/59702699
- Windows上使用iverilog+gtkwave仿真
主要参考了: https://www.cnblogs.com/lsgxeva/p/8280662.html 谢谢! ------------------------------------------ ...