hdu 4055

  一开始我想的递推方向想得很复杂,看了别人的博客后才醍醐灌顶:

  参照他的思路和代码:

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int mod = ;
const int N = ; char s[N];
int dp[N][N], sum[N][N]; int main() {
while(~scanf("%s",s + )) {
memset(dp,,sizeof(dp));
// memset(sum,0,sizeof(sum));
dp[][] = sum[][] = ;
int n = strlen(s + );
for(int i = ; s[i]; ++i) {
for(int j = ; j <= i; ++j) {
if(s[i] == 'I' || s[i] == '?')
dp[i][j] = (dp[i][j] + sum[i - ][j - ]) % mod;
if(s[i] == 'D' || s[i] == '?')
dp[i][j] = (dp[i][j] + (sum[i - ][i - ] - sum[i - ][j - ] + mod) % mod) % mod;
sum[i][j] = (sum[i][j - ] + dp[i][j]) % mod;
}
}
printf("%d\n",sum[n + ][n + ]);
}
return ;
}

  hdu 4489

  用类似的思路我独自 A 出了这道题,只是需要对 dp 数组和 sum 数组加多一维记录当前第 i 位是凹点还是凸点:

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long LL; LL dp[][][], sum[][][]; inline void init(int n = ) {
dp[][][] = dp[][][] = ;
sum[][][] = sum[][][] = ;
for(int i = ; i <= n; ++i) {
for(int j = ; j <= i; ++j) {
dp[i][j][] += sum[i - ][j - ][];
dp[i][j][] += (sum[i - ][i - ][] - sum[i - ][j - ][]);
sum[i][j][] = sum[i][j - ][] + dp[i][j][];
sum[i][j][] = sum[i][j - ][] + dp[i][j][];
}
}
} int main() {
int t,num,n;
init();
scanf("%d",&t);
while(t--) {
scanf("%d %d",&num,&n);
printf("%d %I64d\n", num, n == ? : sum[n][n][] + sum[n][n][]);
}
return ;
}

  空间是可以优化的,不过对于这样的数据范围没必要。

hdu 4055 && hdu 4489 动态规划的更多相关文章

  1. HDU 4055 The King’s Ups and Downs(DP计数)

    题意: 国王的士兵有n个,每个人的身高都不同,国王要将他们排列,必须一高一矮间隔进行,即其中的一个人必须同时高于(或低于)左边和右边.问可能的排列数.例子有1千个,但是最多只算到20个士兵,并且20个 ...

  2. HDU - 2222,HDU - 2896,HDU - 3065,ZOJ - 3430 AC自动机求文本串和模式串信息(模板题)

    最近正在学AC自动机,按照惯例需要刷一套kuangbin的AC自动机专题巩固 在网上看过很多模板,感觉kuangbin大神的模板最为简洁,于是就选择了用kuangbin大神的模板. AC自动机其实就是 ...

  3. hdu 4055 动态规划

    #include<map> #include<set> #include<cmath> #include<queue> #include<cstd ...

  4. Number String(HDU 4055,动态规划递推,前缀和优化)

    点击加号查看代码 #include<bits/stdc++.h>//前缀和优化版本,不易理解 using namespace std; #define ll long long ; ; l ...

  5. The King’s Ups and Downs(HDU 4489,动态规划递推,组合数,国王的游戏)

    题意: 给一个数字n,让1到n的所有数都以波浪形排序,即任意两个相邻的数都是一高一低或者一低一高 比如:1324   4231,再比如4213就是错的,因为4高,2低,接下来1就应该比2高,但是它没有 ...

  6. hdu FatMouse's Speed 动态规划DP

    动态规划的解决方法是找到动态转移方程. 题目地址:http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=3&sectionid ...

  7. HDU 2059 龟兔赛跑(动态规划)

    龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  8. HDU 4055 Number String dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4055 Number String Time Limit: 10000/5000 MS (Java/O ...

  9. hdu 4055 Number String

    Number String http://acm.hdu.edu.cn/showproblem.php?pid=4055 Time Limit: 10000/5000 MS (Java/Others) ...

随机推荐

  1. java文件写入和读出的序列化

    文件的写入入与读出都有它们自己的格式,不便于读入和取出,implement Serializable接口,实现任何个事文件的写入和读取取:

  2. 链接注入(便于跨站请求伪造)(AppScan扫描结果)

    最近工作要求解决下web的项目的漏洞问题,扫描漏洞是用的AppScan工具,其中此篇文章是关于链接注入问题的.下面就把这块东西分享出来. 原创文章,转载请注明 -------------------- ...

  3. javascript学习(三) 内置对象

    一:事件(Event)对象 在触发dom事件的时候都会产生一个event对象 type   获取事件类型 target  获取事件目标 stopPropagation()  阻止事件冒泡 preven ...

  4. HTTP 错误 404.2 - Not Found

    前几天刚安装Windows Server 2008 r2 sp1 遇到问题之后,昨天我又遇到一个问题(但我不害怕有问题),提示: HTTP 错误 404.2 - Not Found由于 Web 服务器 ...

  5. javaWeb项目命名规范

    一.项目结构 这里和其他项目区别不大,我将模板抽离出来,更容易分析和理解: 解释一下:js主要包括extends(引入第三方的js).module(项目模块自己的js).lib(引用包,这里也可以继续 ...

  6. WDCP控制面板如何安装PDO_mysql组件

    http://osacar.iteye.com/blog/2098431 执行wget -c http://down.wdlinux.cn/in/pdo_mysql_ins.sh再执行chmod 75 ...

  7. ClassLoader加载

    摘自:http://blog.csdn.net/moreevan/article/details/6654781

  8. FZU 2168 防守阵地 I

    Problem Description 部队中共有N个士兵,每个士兵有各自的能力指数Xi,在一次演练中,指挥部确定了M个需要防守的地点,按重要程度从低到高排序,依次以数字1到M标注每个地点的重要程度, ...

  9. 在JSP页面显示九九乘法表

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  10. 基于ADL5317的雪崩光电二极管(APD)偏压控制/光功率监测电路的设计

    1 引言 目前,雪崩光电二极管(APD)作为一种高灵敏.能精确接收数据和测量光功率的光探测器件广泛应用于光纤传感.光纤通信网络中.它借助于内部强电场作用产生雪崩倍增效应,具有极高的内部增益(可达102 ...