hrbust 1186 简单DP
来源:互联网 发布:仙界网络直播间sodu 编辑:程序博客网 时间:2024/06/11 20:42
递归的方法会超时。
只有靠递推解决。
递推:
#include<cstdio>#include<cstring>int l,s,t,n;int DP[100010]={};int main(){ while(~scanf("%d%d%d%d",&l,&s,&t,&n)) { memset(DP,0,sizeof(DP)); for(int i=1;i<=n;i++) { int temp; scanf("%d",&temp); DP[temp]=1; } int ans=0; for(int i=l-t;i>=0;i--) { int temp=DP[i+s]; for(int j=s+1;j<=t;j++) { if(DP[i+j]<temp) temp=DP[i+j]; } DP[i]+=temp; } printf("%d\n",DP[0]); } return 0;}
递归:
#include<cstdio>#include<cstring>int l,s,t,n;int DP[100010]={};bool stone[100001]={};int dp(int g){ if(DP[g]!=0) return DP[g]; if(stone[g]==1) DP[g]+=1; if(g+t>=l) return DP[g]; int key=dp(g+s); for(int i=s+1;i<=t;i++) { int temp=dp(g+i); if(temp<key) key=temp; } DP[g]+=key; return DP[g];}int main(){ while(~scanf("%d%d%d%d",&l,&s,&t,&n)) { memset(DP,0,sizeof(DP)); memset(stone,0,sizeof(stone)); for(int i=1;i<=n;i++) { int temp; scanf("%d",&temp); stone[temp]=1; } printf("%d\n",dp(0)); } return 0;}
0 0
- hrbust 1186 简单DP
- hrbust 1186 青蛙过河【Dp】
- HRBUST 1186 青蛙过河(dp)
- hrbust 1705 最高分【Dp】
- Hrbust 1327 合唱【dp】
- Hrbust 1837 Dream【dp】
- Hrbust 1788 Chocolate【Dp】
- hrbust简单操作
- Hrbust 2143 积分大小【dp】
- Hrbust 2095 奶牛家谱【Dp】
- Hrbust 1242 Alphacode【dp】好水啊这个dp
- dp(状态压缩、树形dp)poj3254、HRBUST 1473、HRBUST 1477、HRBUST 1475、ZOJ 3662
- 哈理工oj/hrbust 1790 武林【DP】
- hrbust 1426 集训队的晚饭【dp】
- hrbust 1843 方格取数【状压dp】
- hrbust 1473 教主的遗产【状压dp】
- hrbust 1817 数字添加号问题【dp】
- Hrbust 1376 能量项链【区间dp】
- Head First
- unity3d研究之C# 泛型
- MonkeyRunner源码分析之工作原理图
- javascript之事件处理
- SQL TRUNCATE TABLE的用法
- hrbust 1186 简单DP
- Android原理揭秘系列之View、ViewGroup
- SQL DELETE FROM的用法
- Inno Setup 如何让生成的setup.exe文件有管理员权限
- Android KitCat 4.4.2 ADB 官方所支持的所有Services格式翻译
- pat1057 stack 分块的做法
- BZOJ 1018 SHOI2008 堵塞的交通traffic 线段树
- SQL UPDATE的用法
- erlang系列文章阅读指引