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的更多相关文章

  1. UVA 1558 - Number Game(博弈dp)

    UVA 1558 - Number Game 题目链接 题意:20之内的数字,每次能够选一个数字,然后它的倍数,还有其它已选数的倍数组合的数都不能再选,谁先不能选数谁就输了,问赢的方法 思路:利用dp ...

  2. 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' = ...

  3. hdu 4055 Number String(有点思维的DP)

    Number String Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  4. hdu4055 Number String

    Number String Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...

  5. uva live 4394 String painter 间隔dp

    // uva live 4394 String painter // // 问题是,在培训指导dp运动主题,乍一看,我以为只是一点点复杂 // A A磕磕磕,两个半小时后,.发现超过例子.然而,鉴于他 ...

  6. Number String

    Number String 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4055 dp 定义状态:dp[i][j]为当strlen=i,数字结尾为j的 ...

  7. js Number string

    Number string number Js只有一种数字类型(包括整型,浮点型) 极大或极小的可用科学计数法来表示.(7.7123e+1) 所有js数字均为64位 Js所有的数字都存储为浮点型 小数 ...

  8. 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] + ...

  9. 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 ...

随机推荐

  1. 第16次Scrum会议(10/28)【欢迎来怼】

    一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,冉华小组照片 二.开会信息 时间:2017/10/28 17:20~17:32,总计12min.地点:东北师范 ...

  2. 软工1816·Alpha冲刺(10/10)

    团队信息 队名:爸爸饿了 组长博客:here 作业博客:here 组员情况 组员1(组长):王彬 过去两天完成了哪些任务 协助完成前端各个页面的整合 协助解决前端操作逻辑存在的问题 完成前端的美化,使 ...

  3. A8

    组员:陈锦谋 今日内容: PS学习.抠图.图标像素调整 明日计划: 继续小组内安排的任务 困难: 无

  4. EXT4.1表单提交(非AJAX)

    Ext.require([ 'Ext.form.*', 'Ext.data.*' ]); Ext.onReady(function(){ Ext.apply(Ext.form.VTypes, { re ...

  5. DPDK报文分类与访问控制

    原创翻译,转载请注明出处. dpdk提供了一个访问控制库,提供了基于一系列分类规则对接收到的报文进行分类的能力.ACL库用来在一系列规则上执行N元组查找,可以实现多个分类和对每个分类查找最佳匹配(最高 ...

  6. lintcode-421-简化路径

    421-简化路径 给定一个文档(Unix-style)的完全路径,请进行路径简化. 样例 "/home/", => "/home" "/a/./ ...

  7. Hadoop HDFS环境搭建

    1,首先安装JDK,下面如果JDK出现安装错误,可以卸载 卸载 1.卸载用 bin文件安装的JDK方法: 删除/usr/java目录下的所有东西 2.卸载系统自带的jdk版本方法: 查看自带的jdk: ...

  8. Spring MVC @RequestParam @RequestHeader @CookieValue用法

    摘要: package com.hust.springmvc1; import org.springframework.stereotype.Controller; import org.spring ...

  9. Delphi 组件渐进开发浅谈(一)——由简入繁

    最近业余时间在写游戏修改器玩,对于Delphi自带的组件总觉得差强人意,需要书写大量冗余代码,如果大量使用第三方组件,在以后的移植和与他人交互时也不是很方便,因此便产生了自己封装组件的想法. 实际上这 ...

  10. 第194天:js---函数对象详解(arguments、length)

    一.函数即对象 function add1(a,b){ return a+b; } //Function对象的实例 -- 高级技巧 --- 写框架必须用的... //前面表示参数,后面表示函数语句 v ...