南阳oj 106 背包问题
来源:互联网 发布:过山车大亨中文版 mac 编辑:程序博客网 时间:2024/06/05 15:00
背包问题
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述
现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w<=10);如果给你一个背包它能容纳的重量为m(10<=m<=20),你所要做的就是把物品装到背包里,使背包里的物品的价值总和最大。
输入
第一行输入一个正整数n(1<=n<=5),表示有n组测试数据;
随后有n测试数据,每组测试数据的第一行有两个正整数s,m(1<=s<=10);s表示有s个物品。接下来的s行每行有两个正整数v,w。
输出
输出每组测试数据中背包内的物品的价值和,每次输出占一行。
样例输入
1
3 15
5 10
2 8
3 9
样例输出
65
来源
[苗栋栋]原创
上传者
苗栋栋
#include<stdio.h>#include<cstring>#include<iostream>#include<algorithm>#include<math.h>#include<stdlib.h>#include<stack>#include<vector>#include<string.h>#include<map>#define INF 0x3f3f3f3f3fusing namespace std;struct node{ int v; int w;} a[15];int cmp(node a,node b){ return a.v<b.v;}int main(){ int t; scanf("%d",&t); while(t--) { int n,m,ans=0; scanf("%d%d",&n,&m); for(int i=0; i<n; i++) scanf("%d%d",&a[i].v,&a[i].w); sort(a,a+n,cmp); for(int i=n-1; i>=0; i--) { if(a[i].w<m) { ans+=a[i].w*a[i].v; m-=a[i].w; } else if(a[i].w==m) { ans+=a[i].w*a[i].v; printf("%d\n",ans); break; } else { ans+=m*a[i].v; printf("%d\n",ans); break; } } }}
0 0
- 南阳oj 106 背包问题
- 南阳OJ 背包问题
- 贪心背包-南阳OJ-106
- 南阳oj NYoj 贪心 题目106 背包问题
- 南阳 106 背包问题
- 贪心法 南阳oj 背包问题
- 南阳题目106-背包问题
- 经典代码 南阳 oj 动态规划 背包问题
- 完全背包 南阳oj 311
- 南阳理工ACM 106 背包问题
- 南阳理工ACM 106 背包问题
- 南阳理工:背包问题
- 南阳理工:背包问题
- 南阳oj106 背包问题
- 南阳 oj 6174问题
- 南阳oj 860又见01背包
- 南阳理工--103背包问题
- 南阳理工OJ:倒水问题
- 树状数组详解
- JSP格式化时间
- 最优化中的鞍点
- UVA12563 0-1背包 (一位数组)
- Android 服务与多线程——编写简单的音乐播放器程序
- 南阳oj 106 背包问题
- PHP基于数组的分页函数(核心函数array_slice())
- sphinx介绍和原理
- Desktop Duplication API(桌面拷贝API)
- 转录组测序分析中cufflinks的使用及问题
- Python 的类的下划线命名有什么不同?
- 赠给XJ的代码规范
- SQL语句优化技巧
- HDU2069 Coin Change(暴力)