UVa 990 - Diving for Gold

来源:互联网 发布:淘宝助理编辑宝贝 编辑:程序博客网 时间:2024/04/30 15:51

題目:一個潛水員冒險家,在水下發現了一個沉船,他只有一個氧氣瓶,可以提供t時間的氧氣;

            沉船裡面有一下寶箱,他們的價值和深度已知,取得每個寶物的代價是3*w*d(i),求最大價值。

分析:dp,01背包。數據較少,直接利用位狀態記錄每個元素的選取情況。

說明:直接將t/3w,可以調高計算效率。

#include <cstring>#include <cstdio>int v[30], d[30], f[3334], s[3334];int main(){int t, w, n, cases = 0;while (~scanf("%d%d%d",&t,&w,&n)) {for (int i = 0; i < n; ++ i)scanf("%d%d",&d[i],&v[i]);t /= 3*w;memset(f, 0, sizeof(f));memset(s, 0, sizeof(s));for (int i = 0; i < n; ++ i)for (int j = t; j >= d[i]; -- j)if (f[j] < f[j-d[i]]+v[i]) {f[j] = f[j-d[i]]+v[i];s[j] = s[j-d[i]]|(1<<i);}int sum = 0;for (int i = 0; i < 30; ++ i)if(s[t]&(1<<i))sum ++;if (cases ++) printf("\n");printf("%d\n%d\n",f[t],sum);for (int i = 0; i < 30; ++ i) if (s[t]&(1<<i))printf("%d %d\n",d[i],v[i]);}return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电视开机一直在更新怎么办 云视听极光闪退怎么办 不小心打错电话怎么办 相亲发信息不回怎么办 如果一个人微信不回电话不接怎么办 跟老公吵架打电话不接怎么办 起诉离婚对方不接电话怎么办 苹果手机接电话声音小怎么办 老公不回你微信怎么办 工地欠货款不给怎么办 朋友微信借钱不还怎么办 微信上借钱不还怎么办 微信借钱不还怎么办 微信转账借钱不还怎么办 没欠条人家欠钱不给怎么办 欠货款被告没去怎么办 别人欠我钱不接电话怎么办 借给别人钱不接电话怎么办 欠钱的人玩消失怎么办 被婚介所骗了5万怎么办 贷款紧急联系人被骚扰怎么办 微信限制加好友怎么办 珍爱网的客服老打电话怎么办 百合网的人气是怎么办 苹果x来电不显示怎么办 苹果8黑屏没反应怎么办 苹果六s开不了机怎么办 苹果6s突然黑屏怎么办 苹果6s黑屏了怎么办 苹果6s手机黑屏打不开怎么办 苹果6sp手机死机怎么办 苹果6s打不开机怎么办 6s开不了机怎么办 lg背光灯坏了怎么办 苹果6s屏幕变黄怎么办 苹果8背光坏了怎么办 苹果六背光坏了怎么办 苹果5s蓝屏死机怎么办 苹果6s突然黑屏怎么办? 苹果6s经常死机怎么办 苹果6s没有背光怎么办