hdu 4055 hdu 4489 动态规划
hdu 4055:
一开始我想的递推方向想得很复杂,看了别人的博客后才醍醐灌顶:
参照他的思路和代码:
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int mod = 1000000007; 6 const int N = 1002; 7 8 char s[N]; 9 int dp[N][N], sum[N][N]; 10 11 int main() { 12 while(~scanf("%s",s + 2)) { 13 memset(dp,0,sizeof(dp)); 14 // memset(sum,0,sizeof(sum)); 15 dp[1][1] = sum[1][1] = 1; 16 int n = strlen(s + 2); 17 for(int i = 2; s[i]; ++i) { 18 for(int j = 1; j <= i; ++j) { 19 if(s[i] == 'I' || s[i] == '?') 20 dp[i][j] = (dp[i][j] + sum[i - 1][j - 1]) % mod; 21 if(s[i] == 'D' || s[i] == '?') 22 dp[i][j] = (dp[i][j] + (sum[i - 1][i - 1] - sum[i - 1][j - 1] + mod) % mod) % mod; 23 sum[i][j] = (sum[i][j - 1] + dp[i][j]) % mod; 24 } 25 } 26 printf("%d\n",sum[n + 1][n + 1]); 27 } 28 return 0; 29 }
View Code
hdu 4489:
用类似的思路我独自 A 出了这道题,只是需要对 dp 数组和 sum 数组加多一维记录当前第 i 位是凹点还是凸点:
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 typedef long long LL; 6 7 LL dp[22][22][2], sum[22][22][2]; 8 9 inline void init(int n = 20) { 10 dp[1][1][0] = dp[1][1][0] = 1; 11 sum[1][1][0] = sum[1][1][1] = 1; 12 for(int i = 2; i <= n; ++i) { 13 for(int j = 1; j <= i; ++j) { 14 dp[i][j][1] += sum[i - 1][j - 1][0]; 15 dp[i][j][0] += (sum[i - 1][i - 1][1] - sum[i - 1][j - 1][1]); 16 sum[i][j][0] = sum[i][j - 1][0] + dp[i][j][0]; 17 sum[i][j][1] = sum[i][j - 1][1] + dp[i][j][1]; 18 } 19 } 20 } 21 22 int main() { 23 int t,num,n; 24 init(); 25 scanf("%d",&t); 26 while(t--) { 27 scanf("%d %d",&num,&n); 28 printf("%d %I64d\n", num, n == 1 ? 1: sum[n][n][0] + sum[n][n][1]); 29 } 30 return 0; 31 }
空间是可以优化的,不过对于这样的数据范围没必要。
转载于:https://www.cnblogs.com/Newdawn/p/4730937.html
hdu 4055 hdu 4489 动态规划相关推荐
- HDU 1853 HDU 3488【有向环最小权值覆盖问题 】带权二分图匹配 KM算法
HDU 1853 & HDU 3488[有向环最小权值覆盖问题 ]最小费用最大流 In the kingdom of Henryy, there are N (2 <= N <= ...
- HDU 1853 HDU 3488【有向环最小权值覆盖问题 】最小费用最大流
HDU 1853 & HDU 3488[有向环最小权值覆盖问题 ]带权二分图匹配 KM算法 In the kingdom of Henryy, there are N (2 <= N & ...
- 母函数+例题(hdu 2079+hdu 2082)
母函数+例题(hdu 2079+hdu 2082) 虽然ACM的确有点力不从心,但是还是贵在坚持,继续啃啃算法..... 昨天一个下午学了学母函数,离散数学+幂级数,只能说nb- 看了半天的原理,结果 ...
- hdu 1421 搬寝室 动态规划
http://acm.hdu.edu.cn/showproblem.php?pid=1421 d[n][m] : 在前n个物品里选m对的最小疲劳 当地n件不选时 d[n][m]=d[n-1][m] 当 ...
- HDU 1159 Common Subsequence 动态规划
2017-08-06 15:41:04 writer:pprp 刚开始学dp,集训的讲的很难,但是还是得自己看,从简单到难,慢慢来(如果哪里有错误欢迎各位大佬指正) 题意如下: 给两个字符串,找到其中 ...
- A Walk Through the Forest HDU - 1142(dijkstra+动态规划)
题目大意: 给你一个图,找最短路.但是有个非一般的的条件:如果a,b之间有路, 且你选择要走这条路,那么必须保证a到终点的所有路都小于b到终点的 一条路.问满足这样的路径条数 有多少... 解题思路 ...
- 【HDU - 4055】Number String(dp,思维)
题干: The signature of a permutation is a string that is computed as follows: for each pair of consecu ...
- HDU 5586 Sum (预处理 + 动态规划)
题目链接:传送门 题意:给你n个数字,然后你可以对这n个数组的任意一个子区间进行一个操作,\(f(x)=(1890x+143)mod10007\),或者不进行操作,问你怎样操作能使得加和最大解题思路: ...
- hdu 1251+hdu 1671(字典树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1251 一开始我是直接用STL做的,唉...没有经验那...orz...然后毫无疑问地超时了... 看别 ...
最新文章
- kudu接受kafka消息_Kafka 在车好多
- 互联网高薪的原因、现状、未来,还值不值得进来?
- SAP进阶:再论SAP权限
- reactjs组件的生命周期:创建时和更新时
- php-fpm 找不到 php-cgi.sock 怎么办
- IT人员加班处于恐惧之中
- Chromium Android开发的Eclipse配置
- Quarkus的其他(非标准)CDI功能
- 线性表的常见操作实现
- wordpress数据表说明
- 使用继电器制作振荡器
- 在Windows上使用Mingw-W64进行C/C++开发(gcc工具链)
- 跨域的同时设置headers信息
- 用基带等效的方式仿真8-DPSK载波调制信号在AWGN信道下的误码率和误比特率,并与理论值相比较。
- matlab解非齐次矩阵方程组,matlab-线性代数 非齐次方程组 基础解系和通解
- 万能码,你的启明星(安全扫码专业委员会)
- “燕云十六将”之Jason郝钰(12)
- 解决checkbox选中但是不显示打钩的问题
- 18.12.1 Nuist_ACM集训队数论专场ABC题解
- 获取WiFi MAC地址总结
热门文章
- mysql-5.7在CentOS-7下的rpm安装
- NIO-java.nio.ByteBuffer中flip、rewind、clear方法的区别
- npm install 卡住的时候的处理
- 【转】地球坐标系 (WGS-84) 到火星坐标系 (GCJ-02) 的转换算法 C语言
- MySQL客户端mysql常用命令
- Linux 多网卡bond
- 浏览器通知,可配合socket
- MyBatis由浅入深学习总结之二:MyBatis解决Java实体类和数据库表字段不一致方法总结
- 软件工程软件产品质量要求与评价_软件工程定义
- 利用日志传送来实现数据库的可用性