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 ...
随机推荐
- 第16次Scrum会议(10/28)【欢迎来怼】
一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,冉华小组照片 二.开会信息 时间:2017/10/28 17:20~17:32,总计12min.地点:东北师范 ...
- 软工1816·Alpha冲刺(10/10)
团队信息 队名:爸爸饿了 组长博客:here 作业博客:here 组员情况 组员1(组长):王彬 过去两天完成了哪些任务 协助完成前端各个页面的整合 协助解决前端操作逻辑存在的问题 完成前端的美化,使 ...
- A8
组员:陈锦谋 今日内容: PS学习.抠图.图标像素调整 明日计划: 继续小组内安排的任务 困难: 无
- EXT4.1表单提交(非AJAX)
Ext.require([ 'Ext.form.*', 'Ext.data.*' ]); Ext.onReady(function(){ Ext.apply(Ext.form.VTypes, { re ...
- DPDK报文分类与访问控制
原创翻译,转载请注明出处. dpdk提供了一个访问控制库,提供了基于一系列分类规则对接收到的报文进行分类的能力.ACL库用来在一系列规则上执行N元组查找,可以实现多个分类和对每个分类查找最佳匹配(最高 ...
- lintcode-421-简化路径
421-简化路径 给定一个文档(Unix-style)的完全路径,请进行路径简化. 样例 "/home/", => "/home" "/a/./ ...
- Hadoop HDFS环境搭建
1,首先安装JDK,下面如果JDK出现安装错误,可以卸载 卸载 1.卸载用 bin文件安装的JDK方法: 删除/usr/java目录下的所有东西 2.卸载系统自带的jdk版本方法: 查看自带的jdk: ...
- Spring MVC @RequestParam @RequestHeader @CookieValue用法
摘要: package com.hust.springmvc1; import org.springframework.stereotype.Controller; import org.spring ...
- Delphi 组件渐进开发浅谈(一)——由简入繁
最近业余时间在写游戏修改器玩,对于Delphi自带的组件总觉得差强人意,需要书写大量冗余代码,如果大量使用第三方组件,在以后的移植和与他人交互时也不是很方便,因此便产生了自己封装组件的想法. 实际上这 ...
- 第194天:js---函数对象详解(arguments、length)
一.函数即对象 function add1(a,b){ return a+b; } //Function对象的实例 -- 高级技巧 --- 写框架必须用的... //前面表示参数,后面表示函数语句 v ...