hdoj2602 01背包
来源:互联网 发布:淘宝可用微信付款吗 编辑:程序博客网 时间:2024/06/04 18:14
记忆化搜索:
#include"iostream"#include"algorithm"using namespace std;int volume[1200];int value[1200];int n,v;int f[1200][1200];int solve(int id,int cap){if(f[id][cap]!=-1)return f[id][cap];else{int res;if(id==n)res=0;else if(volume[id]>cap)res=solve(id+1,cap);else res=max(solve(id+1,cap),solve(id+1,cap-volume[id])+value[id]);f[id][cap]=res;return f[id][cap]=res;}}int main(){int t;cin>>t;while(t--){cin>>n>>v;memset(f,-1,sizeof(f));for(int i=0;i<n;i++)cin>>value[i];for(int i=0;i<n;i++)cin>>volume[i];cout<<solve(0,v)<<endl;}return 0;}
#include"iostream"#include"algorithm"using namespace std;const int volume=20000;const int num=2000;int main(){//freopen("a.txt","r",stdin);int T,N,V;int i,v;int f[volume];int c[num];int w[num];cin>>T;while(T--){ cin>>N>>V; memset(c,0,sizeof(c)); memset(w,0,sizeof(w)); memset(f,0,sizeof(f)); for(i=1;i<=N;i++) { cin>>w[i]; } for(i=1;i<=N;i++) { cin>>c[i]; } for(i=1;i<=N;i++) { for(v=V;v>=c[i];v--) if(f[v-c[i]]+w[i]>f[v])//if(max(f[v],f[v-c[i]]+w[i])>f[v]) f[v]=f[v-c[i]]+w[i]; } cout<<f[V]<<endl;}return 0;}
0 0
- hdoj2602 01背包
- hdoj2602 Bone Collector【dp 01背包】
- 动态规划 HDOJ2602-Bone Collector-01背包
- 01背包——HDOJ2602拾骨者
- HDOJ2602(01背包模板题 一维AC+二维TL)
- HDOJ2602(DP0-1背包)
- hdoj2602
- HDOJ2602
- HDOJ2602--0-1背包Bone Collector
- HDOJ2602 Bone Collector(0/1背包)
- HDOJ2602 bone collecter
- Bone Collector(HDOJ2602)
- HDOJ2602 Bone Collector
- hdoj2602 Bone Collector
- 【背包专题】01背包
- 01背包,完全背包
- 01背包 完全背包
- 01背包/完全背包
- HDOJ5672
- SVM学习总结
- 重叠社区发现-LFM算法
- 汇编与驱动-采用SSDT Hook NtOpenProcess保护进程
- NYOJ 还是01背包(枚举+二分)
- hdoj2602 01背包
- HDUOJ1864最大报销额(01背包)
- hrbust/哈理工oj 1526 小猴和冒泡【归并排序】
- iOS学习笔记48-Swift(八)反射
- MySQL存储引擎
- hdoj2036多边形面积的求法
- 第十一周项目3.1 警察和厨师
- Android开发本地及网络Mp3音乐播放器(十二)创建NetMusicListAdapter、SearchResult显示网络音乐列表
- java.lang.Class.forName(String name, boolean initialize, ClassLoader loader)方法