牛客网2018年全国多校算法寒假训练营练习比赛(第二场) B TaoTao要吃鸡 (01背包)
2018-01-30 10:03
375 查看
链接:https://www.nowcoder.com/acm/contest/74/B
解析:
因为数据量很小,所以可以用n^3的复杂度。
这里分开讨论,h==0时就是一个经典的01背包问题
当h!=0时,我们只要规定哪一个武器拿手上,剩下就可以用01背包解,注意这里的总容量要从总容量-1开始,因为不能满
因为数据量很小,所以可以用n^3的复杂度。
这里分开讨论,h==0时就是一个经典的01背包问题
当h!=0时,我们只要规定哪一个武器拿手上,剩下就可以用01背包解,注意这里的总容量要从总容量-1开始,因为不能满
#include <bits/stdc++.h> using namespace std; int value[200],cost[200]; int dp[200]; int main() { int n,m,h; while(scanf("%d",&n),n) { scanf("%d%d",&m,&h); for(int i=1;i<=n;i++) { scanf("%d%d",&cost[i],&value[i]); } memset(dp,0,sizeof(dp)); if(h==0) { for(int i=1;i<=n;i++) { for(int j=m;j>=cost[i];j--) { dp[j]=max(dp[j],dp[j-cost[i]]+value[i]); } } printf("%d\n",dp[m]); } else { int tot=h+m; int ans=0; for(int i=1;i<=n;i++) { memset(dp,0,sizeof(dp)); for(int j=1;j<=n;j++) { if(i==j) continue; for(int k=tot-1;k>=cost[j];k--) { dp[k]=max(dp[k],dp[k-cost[j]]+value[j]); } } ans=max(ans,dp[tot-1]+value[i]); } printf("%d\n",ans); } } return 0; }
相关文章推荐
- 2018年全国多校算法寒假训练营练习比赛(第二场) B TaoTao要吃鸡【01背包 + 贪心】
- 2018年全国多校算法寒假训练营练习比赛(第二场)B(TaoTao要吃鸡 ) (01背包特殊处理)
- 2018年全国多校算法寒假训练营练习比赛(第二场) B TaoTao要吃鸡 (0 1背包 特殊处理一个物品)
- 2018年全国多校算法寒假训练营练习比赛(第二场) B TaoTao要吃鸡 (0 1背包 特殊处理一个物品)
- 2018年全国多校算法寒假训练营练习比赛(第二场) B-TaoTao要吃鸡
- 2018年全国多校算法寒假训练营练习比赛(第二场)B_01背包
- 2018年全国多校算法寒假训练营练习比赛(第二场) B.TaoTao要吃鸡(动态规划)
- 2018年全国多校算法寒假训练营练习比赛(第二场)B - TaoTao要吃鸡
- 2018年全国多校算法寒假训练营练习比赛(第二场) B TaoTao要吃鸡 (0 1背包 特殊处理一个物品)
- 2018年全国多校算法寒假训练营练习比赛(第二场) B TaoTao要吃鸡 (0 1背包 特殊处理一个物品)
- 2018年全国多校算法寒假训练营练习比赛(第二场)taotao要吃鸡
- 2018年全国多校算法寒假训练营练习比赛(第二场) B TaoTao要吃鸡 (0 1背包 特殊处理一个物品)
- 2018年全国多校算法寒假训练营练习比赛(第二场) B TaoTao要吃鸡 (0 1背包 特殊处理一个物品)
- 牛客网2018年全国多校算法寒假训练营练习比赛(第二场)(8题)
- 牛客网NowCoder 2018年全国多校算法寒假训练营练习比赛(第二场)A.吐泡泡(stack) B.TaoTao要吃鸡(动态规划01背包) D.YB要打炉石(最长上升子序列) E.小G有一个大树(树的重心) G.送分了QAQ H.了断局(递推)
- 2018年全国多校算法寒假训练营练习比赛(第二场) B TaoTao要吃鸡 (0 1背包 特殊处理一个物品)
- 牛客网 2018年全国多校算法寒假训练营练习比赛(第二场) 题解
- 2018年全国多校算法寒假训练营练习比赛(第二场) B TaoTao要吃鸡 (0 1背包 特殊处理一个物品)
- 动态规划-背包的基础上进行模拟 2018年全国多校算法寒假训练营练习比赛(第二场)牛客网B题
- 2018年全国多校算法寒假训练营练习比赛(第二场) E 小G有一个大树(树状DP 未解决)