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+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: 序列染色相关推荐
- 扩增子分析解读4去嵌合体,非细菌序列,生成代表性序列和OTU表
写在前面 之前发布的<扩增子图表解读>系列,相信关注过我的朋友大部分都看过了(链接直达7月文章目录).这些内容的最初是写本实验室的学生们学习的材料,加速大家对同行文章的解读能力. < ...
- 有重叠与无重叠序列之序列检测与序列产生
目录 前言 无重叠序列产生 移位寄存器实现 状态机实现 有重叠序列产生 移位寄存器方式实现 状态机方式实现 博文推荐 前言 序列检测与序列产生是一对对称的设计,就像有微分就有积分一样. 序列检测分为有 ...
- Oracle创建序列,删除序列,得到序列的例子
序列的创建 create sequence seq_newsId increment by 1 start with 1 maxvalue 999999999; 得到序列的SQL语句 select s ...
- python序列类型-python序列类型种类详解
python序列类型包括哪三种 python序列类型包括:列表.元组.字典 列表:有序可变序列 创建:userlist = [1,2,3,4,5,6] 修改:userlist[5] = 999 添加: ...
- 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质 | x(n) 分解为实部序列与虚部序列 | 实部傅里叶变换 | 虚部傅里叶变换 | 共轭对称傅里叶变换 | 共轭反对称傅里叶变换 )
文章目录 一.前置概念 1.序列对称分解定理 2.傅里叶变换 3.傅里叶变换的共轭对称分解 二.序列傅里叶变换共轭对称性质 0.序列傅里叶变换共轭对称性质 x(n) 分解为实部序列与虚部序列 x(n) ...
- 【数字信号处理】傅里叶变换性质 ( 序列对称分解定理示例 | 共轭对称序列与原序列之间的关系 | 共轭反对称序列与原序列之间的关系 )
文章目录 一.序列对称分解定理示例 1.序列对称分解定理 2.因果序列 3.求解过程 n < 0 情况 n = 0 情况 n > 0 情况 实因果序列的对称序列与原序列关系 一.序列对称分 ...
- 【数字信号处理】序列傅里叶变换 ( 基本序列的傅里叶变换 | 求 sinωn 的傅里叶变换 | 复变函数欧拉公式 )
文章目录 一.求 sinωn 傅里叶变换 0.sinωn 序列分析 1.傅里叶变换与反变换公式介绍 2.复变函数欧拉公式介绍 3.求 sinωn 的傅里叶变换推导过程 一.求 sinωn 傅里叶变换 ...
- 【数字信号处理】序列傅里叶变换 ( 基本序列的傅里叶变换 | 求 cosωn 的傅里叶变换 | 复变函数欧拉公式 )
文章目录 一.求 cosωn 傅里叶变换 0.cosωn 序列分析 1.傅里叶变换与反变换公式介绍 2.复变函数欧拉公式介绍 3.求 cosωn 的傅里叶变换推导过程 一.求 cosωn 傅里叶变换 ...
- 【数字信号处理】序列傅里叶变换 ( 基本序列的傅里叶变换 | e^jωn 的傅里叶变换 )
文章目录 一.求 ejω0ne^{j \omega_0 n}ejω0n 傅里叶变换 1.傅里叶变换与反变换公式介绍 2.带入 傅里叶变换 公式 一.求 ejω0ne^{j \omega_0 n}ej ...
- 【数字信号处理】序列表示与运算 ( 序列乘以常数 | 序列相加 | 序列移位 | 序列尺度变换 )
文章目录 一.序列表示 二.序列运算 1.序列乘以常数 2.序列相加 3.序列移位 4.序列尺度变换 一.序列表示 任何序列 , 都可以使用 若干 加权延时 单位脉冲序列 的 线性组合 表示 ; x( ...
最新文章
- window 注册表五大类
- 某些列满足某些条件就被改是什么值,不满足就被改为另外的一些值(python pandas)
- PHP的mysqli_fetch_all
- linux 注销其它用户,linux下注销其它用户或者tty的命令
- php new self()关键字的用法
- [XSY4197] Snow(树形DP)
- windows--bat--右键菜单
- 【文文殿下】APIO2019游记
- linux 挂在windows共享文件夹
- 不属于python标准库的是_下列哪项不是Python标准库中处理到程序中参量的模块?...
- 【运动学】基于matlab斜抛物体水平射程+竖直射高【含Matlab源码 979期】
- C#实现驱动级模拟按键
- 如何用python画帆船_简单几步,100行代码用Python画一个蝙蝠侠的logo
- 武汉新时标文化传媒有限公司短视频的类型
- C#chart绘折线图动态添加数据
- 用计算机来打字学猫叫,电脑打字轻松技巧 怎么联系快速打字
- 手机软件的测试主要有哪些方面的测试,性能测试用什么去测试好
- Tessellation on Any Budget
- 辅城坳科目三路线口诀
- 在linux中运行电子词典,《Linux下电子词典的设计和实现》.doc
热门文章
- javaIO流-File类及其方法
- MYSQL char字符型区分大小写,查询区分大小写
- TCP 理论概述与 Java 编码入门
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_07 缓冲流_4_缓冲流的效率测试_复制文件...
- SEO HTML语义化
- iOS 自定义底部tabbar加号按钮实现方法
- bzoj 2212 Tree Rotations
- vSphere虚拟机磁盘热扩容
- Jzoj3882 近邻
- WPF 微信 MVVM 【续】发送部分QQ表情