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. Scrum立会报告+燃尽图(十月二十五日总第十六次)

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2284 项目地址:https://git.coding.net/zhang ...

  2. OpenNF tutorial复现

    这篇博客记录了自己实现OpenNF官网上tutorial的过程和遇见的问题,如果有不对的地方还请批评指正! tutorial链接 实验内容 这个实验展示了如何迅速且安全地把一个TCP流从一个NF实例迁 ...

  3. Transparent Flow Migration for NFV

    Transparent Flow Migration for NFV 摘要 因为SDN提供的灵活性,NF之间存在着流量的迁入和迁出问题.而且NF也要根据相关的状态信息处理数据包,所以流量迁移必须满足以 ...

  4. HDU 5191 Building Blocks

    题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5191 bc(中文):http://bestcoder.hdu.edu.cn/contests ...

  5. String、StringBuilder与StringBuffer的区别

    1.String类是public.final修饰的. 在Java中,被final修饰的类是不允许被继承的,并且String它的成员方法都默认为final方法. 查看源码得知,String类其实是通过c ...

  6. 第八次java笔记

  7. QHash和QMultiHash使用

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QHash和QMultiHash使用     本文地址:http://techieliang. ...

  8. JS扫雷原理性代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. PHP实现HTML页面静态化

    随着网站的内容的增多和用户访问量的增多,无可避免的是网站加载会越来越慢,受限于带宽和服务器同一时间的请求次数的限制,我们往往需要在此时对我们的网站进行代码优化和服务器配置的优化.一般情况下会从以下方面 ...

  10. Android Studio -导入项目 gradle处理

    如果导入 android studio 项目, 那么一定要注意 需要合适的gradle版本,具体方法为: 首先导入步骤: 打开android studio ==> File ==> New ...