DP这种东西,考场上就只能看命了。。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
const int mod=1e9+7;LL f[1100000][3][2];//f[i][j][k]表示第i个位置 j=0没有连续K个的B或W,j=1只有B有,j=2 BW都有  k表示放B还是W
int b[1100000],w[1100000];
char ss[1100000];
int main()
{int n,K;scanf("%d%d",&n,&K);scanf("%s",ss+1);for(int i=1;i<=n;i++){b[i]=b[i-1];w[i]=w[i-1];if(ss[i]=='B')b[i]++;else if(ss[i]=='W')w[i]++;}memset(f,0,sizeof(f));f[0][0][1]=1;for(int i=1;i<=n;i++){if(ss[i]=='B'||ss[i]=='X'){f[i][0][0]=(f[i][0][0]+(f[i-1][0][0]+f[i-1][0][1])%mod)%mod;f[i][1][0]=(f[i][1][0]+(f[i-1][1][0]+f[i-1][1][1])%mod)%mod;f[i][2][0]=(f[i][2][0]+(f[i-1][2][0]+f[i-1][2][1])%mod)%mod;}if(ss[i]=='W'||ss[i]=='X'){f[i][0][1]=(f[i][0][1]+(f[i-1][0][0]+f[i-1][0][1])%mod)%mod;f[i][1][1]=(f[i][1][1]+(f[i-1][1][0]+f[i-1][1][1])%mod)%mod;f[i][2][1]=(f[i][2][1]+(f[i-1][2][0]+f[i-1][2][1])%mod)%mod;}if(i<K)continue;if((ss[i]=='B'||ss[i]=='X')&&w[i]==w[i-K]){f[i][1][0]=(f[i][1][0]+f[i-K][0][1])%mod;f[i][0][0]=(f[i][0][0]-f[i-K][0][1]+mod)%mod; }if((ss[i]=='W'||ss[i]=='X')&&b[i]==b[i-K]){f[i][2][1]=(f[i][2][1]+f[i-K][1][0])%mod;f[i][1][1]=(f[i][1][1]-f[i-K][1][0]+mod)%mod;}}printf("%lld\n",(f[n][2][0]+f[n][2][1])%mod);return 0; } 

转载于:https://www.cnblogs.com/AKCqhzdy/p/8810508.html

bzoj2958: 序列染色3269: 序列染色相关推荐

  1. 扩增子分析解读4去嵌合体,非细菌序列,生成代表性序列和OTU表

    写在前面 之前发布的<扩增子图表解读>系列,相信关注过我的朋友大部分都看过了(链接直达7月文章目录).这些内容的最初是写本实验室的学生们学习的材料,加速大家对同行文章的解读能力. < ...

  2. 有重叠与无重叠序列之序列检测与序列产生

    目录 前言 无重叠序列产生 移位寄存器实现 状态机实现 有重叠序列产生 移位寄存器方式实现 状态机方式实现 博文推荐 前言 序列检测与序列产生是一对对称的设计,就像有微分就有积分一样. 序列检测分为有 ...

  3. Oracle创建序列,删除序列,得到序列的例子

    序列的创建 create sequence seq_newsId increment by 1 start with 1 maxvalue 999999999; 得到序列的SQL语句 select s ...

  4. python序列类型-python序列类型种类详解

    python序列类型包括哪三种 python序列类型包括:列表.元组.字典 列表:有序可变序列 创建:userlist = [1,2,3,4,5,6] 修改:userlist[5] = 999 添加: ...

  5. 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质 | x(n) 分解为实部序列与虚部序列 | 实部傅里叶变换 | 虚部傅里叶变换 | 共轭对称傅里叶变换 | 共轭反对称傅里叶变换 )

    文章目录 一.前置概念 1.序列对称分解定理 2.傅里叶变换 3.傅里叶变换的共轭对称分解 二.序列傅里叶变换共轭对称性质 0.序列傅里叶变换共轭对称性质 x(n) 分解为实部序列与虚部序列 x(n) ...

  6. 【数字信号处理】傅里叶变换性质 ( 序列对称分解定理示例 | 共轭对称序列与原序列之间的关系 | 共轭反对称序列与原序列之间的关系 )

    文章目录 一.序列对称分解定理示例 1.序列对称分解定理 2.因果序列 3.求解过程 n < 0 情况 n = 0 情况 n > 0 情况 实因果序列的对称序列与原序列关系 一.序列对称分 ...

  7. 【数字信号处理】序列傅里叶变换 ( 基本序列的傅里叶变换 | 求 sinωn 的傅里叶变换 | 复变函数欧拉公式 )

    文章目录 一.求 sinωn 傅里叶变换 0.sinωn 序列分析 1.傅里叶变换与反变换公式介绍 2.复变函数欧拉公式介绍 3.求 sinωn 的傅里叶变换推导过程 一.求 sinωn 傅里叶变换 ...

  8. 【数字信号处理】序列傅里叶变换 ( 基本序列的傅里叶变换 | 求 cosωn 的傅里叶变换 | 复变函数欧拉公式 )

    文章目录 一.求 cosωn 傅里叶变换 0.cosωn 序列分析 1.傅里叶变换与反变换公式介绍 2.复变函数欧拉公式介绍 3.求 cosωn 的傅里叶变换推导过程 一.求 cosωn 傅里叶变换 ...

  9. 【数字信号处理】序列傅里叶变换 ( 基本序列的傅里叶变换 | e^jωn 的傅里叶变换 )

    文章目录 一.求 ejω0ne^{j \omega_0 n}ejω0​n 傅里叶变换 1.傅里叶变换与反变换公式介绍 2.带入 傅里叶变换 公式 一.求 ejω0ne^{j \omega_0 n}ej ...

  10. 【数字信号处理】序列表示与运算 ( 序列乘以常数 | 序列相加 | 序列移位 | 序列尺度变换 )

    文章目录 一.序列表示 二.序列运算 1.序列乘以常数 2.序列相加 3.序列移位 4.序列尺度变换 一.序列表示 任何序列 , 都可以使用 若干 加权延时 单位脉冲序列 的 线性组合 表示 ; x( ...

最新文章

  1. window 注册表五大类
  2. 某些列满足某些条件就被改是什么值,不满足就被改为另外的一些值(python pandas)
  3. PHP的mysqli_fetch_all
  4. linux 注销其它用户,linux下注销其它用户或者tty的命令
  5. php new self()关键字的用法
  6. [XSY4197] Snow(树形DP)
  7. windows--bat--右键菜单
  8. 【文文殿下】APIO2019游记
  9. linux 挂在windows共享文件夹
  10. 不属于python标准库的是_下列哪项不是Python标准库中处理到程序中参量的模块?...
  11. 【运动学】基于matlab斜抛物体水平射程+竖直射高【含Matlab源码 979期】
  12. C#实现驱动级模拟按键
  13. 如何用python画帆船_简单几步,100行代码用Python画一个蝙蝠侠的logo
  14. 武汉新时标文化传媒有限公司短视频的类型
  15. C#chart绘折线图动态添加数据
  16. 用计算机来打字学猫叫,电脑打字轻松技巧 怎么联系快速打字
  17. 手机软件的测试主要有哪些方面的测试,性能测试用什么去测试好
  18. Tessellation on Any Budget
  19. 辅城坳科目三路线口诀
  20. 在linux中运行电子词典,《Linux下电子词典的设计和实现》.doc

热门文章

  1. javaIO流-File类及其方法
  2. MYSQL char字符型区分大小写,查询区分大小写
  3. TCP 理论概述与 Java 编码入门
  4. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_07 缓冲流_4_缓冲流的效率测试_复制文件...
  5. SEO HTML语义化
  6. iOS 自定义底部tabbar加号按钮实现方法
  7. bzoj 2212 Tree Rotations
  8. vSphere虚拟机磁盘热扩容
  9. Jzoj3882 近邻
  10. WPF 微信 MVVM 【续】发送部分QQ表情