UVA 1650 Number String
https://vjudge.net/problem/UVA-1650
题意:D表示比前一个数打,I表示比前一个数小,?表示不确定
给出一个长为n由D I?组成的字符串,问满足字符串大小要求的n+1的排列的方案数
SDOI2010地精部落的套路
http://www.cnblogs.com/TheRoadToTheGold/p/7305170.html
dp[i][j]前i个数的排列中,第一个为j的方案数
#include<cstdio>
#include<cstring>
#define mod 1000000007
#define N 1000
using namespace std;
char s[N+];
int dp[N+][N+];
int main()
{
while(scanf("%s",s)!=EOF)
{
int len=strlen(s);
memset(dp,,sizeof(dp));
for(int i=;i<=len;i++) dp[][i]=;
for(int i=;i<=len;i++)
for(int j=;j<=i;j++)
{
if(s[i-]=='D' || s[i-]=='?')
for(int k=j;k<i;k++) dp[i][j]+=dp[i-][k],dp[i][j]%=mod;
if(s[i-]=='I' || s[i-]=='?')
for(int k=;k<j;k++) dp[i][j]+=dp[i-][k],dp[i][j]%=mod;
}
int ans=;
for(int i=;i<=len;i++) ans+=dp[len][i],ans%=mod;
printf("%d\n",ans);
}
}
#include<cstdio>
#include<cstring>
#define mod 1000000007
#define N 1000
using namespace std;
char s[N+];
int dp[N+][N+],sum[N+][N+];
int main()
{
while(scanf("%s",s)!=EOF)
{
int len=strlen(s);
memset(dp,,sizeof(dp));
memset(sum,,sizeof(sum));
for(int i=;i<=len;i++) dp[][i]=,sum[][i]=i+;
for(int i=;i<=len;i++)
{
if(s[i-]=='D' || s[i-]=='?') dp[i][]=sum[i-][i-],sum[i][]=dp[i][];
for(int j=;j<=i;j++)
{
if(s[i-]=='D' || s[i-]=='?') dp[i][j]=(sum[i-][i-]-sum[i-][j-]+mod)%mod;
if(s[i-]=='I' || s[i-]=='?') dp[i][j]=(dp[i][j]+sum[i-][j-])%mod;
sum[i][j]=sum[i][j-]+dp[i][j],sum[i][j]%=mod;
}
}
printf("%d\n",sum[len][len]);
}
}
UVA 1650 Number String的更多相关文章
- UVA 1558 - Number Game(博弈dp)
UVA 1558 - Number Game 题目链接 题意:20之内的数字,每次能够选一个数字,然后它的倍数,还有其它已选数的倍数组合的数都不能再选,谁先不能选数谁就输了,问赢的方法 思路:利用dp ...
- perl malformed JSON string, neither tag, array, object, number, string or atom, at character offset
[root@wx03 ~]# cat a17.pl use JSON qw/encode_json decode_json/ ; use Encode; my $data = [ { 'name' = ...
- hdu 4055 Number String(有点思维的DP)
Number String Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- hdu4055 Number String
Number String Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- uva live 4394 String painter 间隔dp
// uva live 4394 String painter // // 问题是,在培训指导dp运动主题,乍一看,我以为只是一点点复杂 // A A磕磕磕,两个半小时后,.发现超过例子.然而,鉴于他 ...
- Number String
Number String 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4055 dp 定义状态:dp[i][j]为当strlen=i,数字结尾为j的 ...
- js Number string
Number string number Js只有一种数字类型(包括整型,浮点型) 极大或极小的可用科学计数法来表示.(7.7123e+1) 所有js数字均为64位 Js所有的数字都存储为浮点型 小数 ...
- HDU 4054 Number String
HDU 4054 Number String 思路: 状态:dp[i][j]表示以j结尾i的排列 状态转移: 如果s[i - 1]是' I ',那么dp[i][j] = dp[i-1][j-1] + ...
- HDU-4055:Number String
链接:HDU-4055:Number String 题意:给你一个字符串s,s[i] = 'D'表示排列中a[i] > a[i+1],s[i] = 'I'表示排列中a[i] < a[i+1 ...
随机推荐
- 王者荣耀交流协会final发布中间产物
WBS+PSP 版本控制报告 软件功能说明书final修订
- ssd a
Alpha版本测试报告 (1)测试计划 测试人员 工作安排 瞿煌人 制定测试计划,撰写测试报告 周建峰 执行测试,撰写测试报告 注:测试结果Y表示通过测试,N表示未通过测试. 功能 描述 效果 测试结 ...
- Eclipse/myEclipse 代码提示/自动提示/自动完成设置(转)
一.设置超级自动提示 设置eclipse/myEclipse代码提示可以方便开发者,不用在记住拉杂的单词,只用打出首字母,就会出现提示菜单.如同dreamweaver一样方便. 1.菜单window- ...
- Codeforces Round #272 (Div. 2) E. Dreamoon and Strings dp
题目链接: http://www.codeforces.com/contest/476/problem/E E. Dreamoon and Strings time limit per test 1 ...
- Scrum Meeting Beta - 3
Scrum Meeting Beta - 3 NewTeam 2017/12/1 地点:新主楼F座二楼 任务反馈 团队成员 完成任务 计划任务 安万贺 完成布局方面的界面优化Issue #125 李奕 ...
- Mac下Git的基础操作
目前最火的版本控制软件是Git了吧,今天简单梳理一下Mac下Git的基础操作~~ 一.什么是Git Git是一个分布式代码管理工具,用于敏捷的处理或大或小的项目,类似的工具还有svn. 基于Git的快 ...
- KeyBoard 操作 !
键盘操作:tab/ enter/ crtl+c ,crtl+v ; import java.awt.*; import java.awt.datatransfer.StringSelection; i ...
- jdk&tomcat环境变量配置及同时运行多个tomcat方法
一:jdk配置 安装jdk1.7.0_51,安装过程中所有选项保持默认:最后配置 JDK的环境变量: 在“我的电脑”上点右键—>“属性”—>“高级”—>“环境变量(N)”. 1.新建 ...
- 【Python】tuple and list 练习
Tuple: 1. __add__ a = (,,,,,,,,,) b = (,,,,,,,), c = (,,,,), result = a.__add__(b) print(resul ...
- BZOJ 2190 仪仗队(线性筛欧拉函数)
简化题意可知,实际上题目求得是gcd(i,j)=1(i,j<=n)的数对数目. 线性筛出n大小的欧拉表,求和*2+1即可.需要特判1. # include <cstdio> # in ...