NYOJ完全背包

来源:互联网 发布:dijkstra算法 matlab 编辑:程序博客网 时间:2024/05/17 19:19
描述

直接说题意,完全背包定义有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的体积是c,价值是w。求解将哪些物品装入背包可使这些物品的体积总和不超过背包容量,且价值总和最大。本题要求是背包恰好装满背包时,求出最大价值总和是多少。如果不能恰好装满背包,输出NO

输入
第一行: N 表示有多少组测试数据(N<7)。 
接下来每组测试数据的第一行有两个整数M,V。 M表示物品种类的数目,V表示背包的总容量。(0<M<=2000,0<V<=50000)
接下来的M行每行有两个整数c,w分别表示每种物品的重量和价值(0<c<100000,0<w<100000)
输出
对应每组测试数据输出结果(如果能恰好装满背包,输出装满背包时背包内物品的最大价值总和。 如果不能恰好装满背包,输出NO)
样例输入
21 52 22 52 25 1
样例输出
NO1
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int dp[50050];struct fin{int c,w;}p[2005];int main(){int t,n,v,i,j;scanf("%d",&t);while(t--){scanf("%d %d",&n,&v);for(i=1;i<=n;i++)    scanf("%d %d",&p[i].c,&p[i].w);memset(dp,-10000,sizeof(dp));dp[0]=0;for(i=1;i<=n;i++){for(j=p[i].c;j<=v;j++){dp[j]=max(dp[j],dp[j-p[i].c]+p[i].w);}}if(dp[v]<0)printf("NO\n");elseprintf("%d\n",dp[v]);}return 0;}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 换新银行卡旧卡怎么办 极品飞车20掉帧怎么办 房子有股霉味怎么办 杭州银行储蓄卡怎么办 奶瓶奶嘴吸不到怎么办 银座的卡过期怎么办 鄂州古楼银座怎么办 广发预付卡过期怎么办 和店长闹翻了怎么办 店长和员工吵架怎么办 店长总是欺负我怎么办 店长一直针对你怎么办 发票读入是灰色怎么办 韩国提货单丢了怎么办 生产商品砼资质怎么办 平台贷款被骗了怎么办 上海银行工资卡遗失怎么办 农行etc换车了怎么办 曲堤11个村怎么办 信用卡要到期了怎么办 歌华有线怎么办停机 银行卡吐不出来怎么办 遂宁银行办信用卡怎么办 中国银行u盾冻结怎么办 京东账号被拉黑怎么办 自己配电脑系统怎么办 没有京东白条怎么办 还款银行卡丢了怎么办 注销不符合条件房地产怎么办 淘宝买东西买完就降价怎么办 闲鱼收到空包怎么办 咸鱼上没收到货怎么办 沙发颜色错了怎么办 运动鞋网面发黄怎么办 京东不让退货怎么办 第一次送美团又不会怎么办 退货把货寄错了怎么办 冰箱发动机没坏不制冷怎么办 冰箱发动机坏了怎么办 冰箱侧面有坑怎么办 冰箱门上有坑怎么办