2014 Super Training #10 D 花生的序列 --DP
原题: FZU 2170 http://acm.fzu.edu.cn/problem.php?pid=2170
这题确实是当时没读懂题目,连样例都没想通,所以没做了,所以还是感觉这样散漫的做不好,有些题目明明很简单,却因为没看懂而放弃了,甚至去玩了,这样达不到太大的效果。
解法:
定义: dp[i][j]:前i个字母中有j个是属于第一个序列的标号方案种数。
则当遇到'B'时,因为要满足WB依次间歇出现,所以前面属于第一个序列的个数应该为奇数,即j&1时转移。当属于第二个序列的个数为奇数时((i-j)&1)也要转移,因为这个B有可能属于第二个序列。当遇到'W'时反之。
用滚动数组节省空间。
代码:
![](/assets/blank.gif)
![](/assets/blank.gif)
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <algorithm> #define Mod 1000000007 using namespace std; #define N 6007int dp[2][N]; char ss[N];int main() {int n,i,j;int now;int t;scanf("%d",&t);while(t--){scanf("%d",&n);scanf("%s",ss);memset(dp,0,sizeof(dp));dp[0][0] = 1;for(i=0,now=1;i<2*n;i++,now=1-now){memset(dp[now],0,sizeof(dp[now]));if(ss[i] == 'B'){for(j=0;j<=n;j++){if(j&1)dp[now][j+1] = (dp[now][j+1]+dp[i&1][j])%Mod;if((i-j)&1)dp[now][j] = (dp[now][j]+dp[i&1][j])%Mod;}}else{for(j=0;j<=n;j++){if((j&1) == 0)dp[now][j+1] = (dp[now][j+1]+dp[i&1][j])%Mod;if(((i-j)&1) == 0)dp[now][j] = (dp[now][j]+dp[i&1][j])%Mod;}}}printf("%d\n",dp[0][n]);}return 0; }
View Code
转载于:https://www.cnblogs.com/whatbeg/p/3832266.html
2014 Super Training #10 D 花生的序列 --DP相关推荐
- 2014 Super Training #8 C An Easy Game --DP
原题:ZOJ 3791 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3791 题意:给定两个0-1序列s1, s2,操作t ...
- 2014 Super Training #7 F Power of Fibonacci --数学+逆元+快速幂
原题:ZOJ 3774 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3774 --------------------- ...
- 2015 UESTC Winter Training #10【Northeastern Europe 2009】
2015 UESTC Winter Training #10 Northeastern Europe 2009 最近集训都不在状态啊,嘛,上午一直在练车,比赛时也是刚吃过午饭,状态不好也难免,下次比赛 ...
- 信息学奥赛一本通 1177:奇数单增序列 | OpenJudge NOI 1.10 02:奇数单增序列
[题目链接] ybt 1177:奇数单增序列 OpenJudge NOI 1.10 02:奇数单增序列 [题目考点] 1. 排序 [君义精讲]排序算法 [解题思路] 题目中说的是要先取出奇数,再对奇数 ...
- 2014 UESTC Training for Data Structures D - 长使英雄泪满襟
以下内容来自ShallWe's blog 题目 2014 UESTC Training for Data Structures D - 长使英雄泪满襟 看出司马懿在等蜀军粮草不济,孔明于是下令分兵屯田 ...
- 【codevs1048】【codevs115406TG】石子归并、能量项链,序列dp的典型题目
1048 石子归并 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并 ...
- 【NOIP训练】塔防游戏 序列DP / 数据结构
题 有 n n n 座塔标号为 1−n" role="presentation" style="position: relative;">1−n ...
- [2020.10.25NOIP模拟赛]序列【Splay】
正题 题目链接:https://www.luogu.com.cn/problem/U136336?contestId=36038 题目大意 第iii次找到第iii大的数字位置xix_ixi并且翻转[ ...
- 《Python Cookbook 3rd》笔记(1.10):删除序列相同元素并保持顺序
删除序列相同元素并保持顺序 问题 怎样在一个序列上面保持元素顺序的同时消除重复的值? 解法 如果序列上的值都是 hashable 类型,那么可以很简单的利用集合或者生成器来解决这个问题.比如: def ...
最新文章
- element ui 组件踩坑记录--后台管理系统-最全
- akshare 布林通道策略
- VMVare 虚拟机使用桥接模式
- 安卓模拟器安装过程记录 20200926
- keygenerator php,学习PHP生成器的使用
- POJ3264Balanced Lineup(线段树)
- 用jquery给Struts2的s:radio /标签添加change事件
- “谷歌金山词霸”换汤不换药 实验结果令人失望
- 【模型加速】PointPillars模型TensorRT加速实验(4)
- win7开机突然变得很慢_Win7电脑反应变慢怎么办?
- Realtek 1296 (RTD1296) OpenWRT Android 双系统全功能开发板
- (ACWing yxc基础算法课笔记) 前缀和
- 计算机组成原理基础知识试题及答案,[电脑基础知识]计算机组成原理试题库.doc...
- Flash(AS2.0)与php通讯 分享
- 神经网络 注意力机制 Q K V 理解
- javascript_实现
- 【模型剪枝】|Learning Efficient Convolutional Networks through Network Slimming
- win10安装软件时显示:“现在更新设备, 若要继续接收应用建议,请立即更新”
- SVN客户端无法连接服务器的问题
- Linux上的程序是通用的吗,运行兼容 Linux Standard Base (LSB)程序的通用解决办法
热门文章
- Python爬虫基础:简单的爬虫入门示例(urllib库)
- JVM 调优实战--常见的垃圾回收算法及垃圾收集器组合
- Java工具类--Map集合与Java对象相互转换
- python url编码 空格_使用请求和python时URL中的空格
- python3.7 安装pip3_Ubuntu16.04 安装python3.7和pip3
- 信号与线性系统分析_什么是线性系统?如何辨别控制系统?控制系统基本要求是什么?...
- 我这么讲线索二叉树,我三岁大的表弟笑了笑
- java 静态 二维数组 转化hashmap_将一个二维数组转换为 hashmap 哈希表
- inx的c语言表达式,Spninx 解决的问题
- uImage和zImage的区别