uva 10130 超级甩卖 SuperSale
来源:互联网 发布:windows 10 rs1 iso 编辑:程序博客网 时间:2024/04/27 19:33
题目大意:
一个商场打促销,所有的东西都有价格和重量,你打算趁着促销的时候带着一家老小来抢购。每个人拿东西规定一样只能拿一个,问你最后全家总共拿了的物品的价值。
思路见代码下方:
#include<iostream>#include<algorithm>#include<cstdio>#include<vector>#include<cstring>#include<string>using namespace std;int dp[30001];int price[1001],weight[1001],group[101];int max(int x,int y){ if(x>y) return x; return y;}int main(){ ios::sync_with_stdio(false); int t,n,i,j,g,tot,k; cin>>t; while(t--) { tot=0; cin>>n; for(i=1;i<=n;i++) cin>>price[i]>>weight[i]; cin>>g; for(i=1;i<=g;i++) cin>>group[i]; for(k=1;k<=g;k++) { memset(dp,0,sizeof(dp)); for(i=1;i<=n;i++) { for(j=group[k];j>=weight[i];j--) dp[j]=max(dp[j],dp[j-weight[i]]+price[i]); } tot+=dp[group[k]]; } cout<<tot<<endl; } return 0;}
思路
最开始理解这道题以为全家拿的东西都不能重复,结果发现样例算的不对。后来发现是每个人拿的东西不能重复而已。对每个进行01背包即可。(现在其实可以想象如果每个人拿的东西都不能一样该咋做?)[^footnote].
0 0
- uva 10130 超级甩卖 SuperSale
- uva 10130 SuperSale
- UVA 10130 SuperSale
- Uva 10130 - SuperSale
- UVa 10130 - SuperSale
- UVa 10130 - SuperSale
- UVa 10130 - SuperSale 背包
- uva 10130 - SuperSale
- UVa 10130 - SuperSale
- UVa 10130 - SuperSale
- Uva-10130-SuperSale
- UVa:10130 SuperSale
- UVA - 10130 SuperSale
- UVa 10130 - SuperSale
- UVa 10130 - SuperSale
- uva 10130 SuperSale
- uva 10130 SuperSale
- UVa 10130—SuperSale
- onvif规范中文介绍
- 软件启动报错,该内存不能为read
- Android 中如何使用 enum / 枚举
- 由Mac ME 控制台中文乱码而引出的一系列问题
- Github上优秀的Objective-C项目简介
- uva 10130 超级甩卖 SuperSale
- Laravel 路由和控制器子目录
- LeetCode_Path Sum II
- NSNumber、NSValue、NSData区别与联系
- mybatis 动态SQL与模糊查询
- 栈的应用---四则运算表达式求值
- beaglebone black tftp与nfs挂载根文件系统
- ThinkPHP核心类源码剖析
- 异或运算与常用方法示例