南阳理工ACM——106背包问题
描述:
现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值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<string.h>
void sort(int v[],int w[],int m)
{
int i,j,k;
int t;
for(i=0;i<m-1;i++)
{
k=i;
for(j=i+1;j<m;j++)
if(v[j]>v[k])
k=j;
t=v[k];v[k]=v[i];v[i]=t;
t=w[k];w[k]=w[i];w[i]=t;
}
}
int main()
{
int n;
int s,m;
int v[10],w[10];
int i,z;
scanf("%d",&n);
while(n--)
{
z=0;
scanf("%d%d",&s,&m);
//printf("Hello\n");
for(i=0;i<s;i++)
scanf("%d%d",&v[i],&w[i]);
sort(v,w,s);
//for(i=0;i<s;i++)
//printf("%d %d\n",v[i],w[i]);
for(i=0;i<s;i++)
{
if(m>w[i])
{
m=m-w[i];
z=z+v[i]*w[i];
}
else
{
z=z+m*v[i];
break;
}
}
printf("%d\n",z);
}
return 0;
}
最优:
<pre name="code" class="cpp">
#include<stdio.h>
#define max(a,b) a>b?a:b
int main()
{
int n,s,m,v,w,i,j,k;
scanf("%d",&n);
while(n--)
{
int DP[25]={0};
scanf("%d %d",&s,&m);
for(i=0;i<s;i++)
{
scanf("%d %d",&v,&w);
for(k=0;k<w;k++)
for(j=m;j>0;j--)
DP[j]=max(DP[j-1]+v,DP[j]);
}
printf("%d\n",DP[m]);
}
}
南阳理工ACM——106背包问题的更多相关文章
- 矩形嵌套 南阳理工ACM
描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度).例如(1, ...
- 单调递增最长子序列(南阳理工ACM)
描述 求一个字符串的最长递增子序列的长度如:dabdbf最长递增子序列就是abdf,长度为4 输入 第一行一个整数0<n<20,表示有n个字符串要处理随后的n行,每行有一个字符串,该字符串 ...
- 南阳理工ACM 括号匹配问题,并求出使得括号能够匹配需要新增的最小括号数(括号匹配(二))
描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起 ...
- 南阳理工ACM Skiing问题
描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道载一个区域中最长底 ...
- 2015,3,10 2(南阳理工ACM)
描述有一个整型偶数n(2<= n <=10000),你要做的是:先把1到n中的所有奇数从小到大输出,再把所有的偶数从小到大输出. 输入 第一行有一个整数i(2<=i<30) ...
- 2015,3,10 1(南阳理工ACM)
描述输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符. 输入 第一行输入一个数N,表示有N组测试数据.后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成, ...
- NYOJ 106背包问题
http://acm.nyist.net/JudgeOnline/problem.php?pid=106 背包问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现 ...
- 南阳师范学院ACM集训队博客使用方法
南阳师范学院ACM集训队博客使用方法 为方便大家交流,我们使用的是同一个用户名和密码,所以请不要随意修改用户名和密码,不然大家都登不上了,谢谢! 首先进入主页:http://www.cnblogs.c ...
- 记:青岛理工ACM交流赛筹备工作总结篇
这几天筹备青岛理工ACM交流赛的过程中遇到了不少问题也涨了不少经验.对非常多事也有了和曾经不一样的看法, 一直在想事后把这几天的流水帐记一遍,一直没空直到今天考完C++才坐下来開始动笔.将这几天的忙 ...
随机推荐
- iOS CocoaPods安装和使用图解
Cocoapods安装步骤 1.升级Ruby环境 sudo gem update --system 如果Ruby没有安装,请参考 如何在Mac OS X上安装 Ruby运行环境 2.安装CocoaPo ...
- python中的reduce(转)
python中的reduce内建函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 func()(必须是一个二元操作函数)先对集合中的第1 ...
- 时间管理-SMART原则
制定目标有一个“黄金准则”——SMART原则.SMART是英文5个词的第一个字母的汇总.好的目标应该能够符合SMART原则. S(Specific)——明确性 所谓明确就是要用具体的语言清楚地说明要 ...
- [JavaEE] WEB-INF有关的目录路径总结
1.资源文件只能放在WebContent下面,如 CSS,JS,image等.放在WEB-INF下引用不了. 2.页面放在WEB-INF目录下面,这样可以限制访问,提高安全性.如JSP,html 3. ...
- Android学习笔记⑤——UI组件的学习TextView相关
TextView是一个强大的视图组件,直接继承了View,同时也派生出了很多子类,TextView其作用说白了就是在布局中显示文本,有点像Swing编程中的JLabel标签,但是他比JLabel强大的 ...
- pyenv的安装和使用
1. 先安装crul和git sudo apt-get install curl git-core 2. 安装pyenv curl https://raw.github.com/yyuu/pyenv- ...
- linux yum install resource - epel
首先现在如下rpm包,然后安装对应的rpm包centos5 32位epel源下载地址: www.lishiming.net/data/attachment/forum/epel-release-5-4 ...
- JavaScript实现XML与JSON互转代码(转载)
下面来分享一个关于JavaScript实现XML与JSON互转例子,这里面介绍了国外的三款xml转json的例子,希望这些例子能给你带来帮助. 最近在开发在线XML编辑器,打算使用JSON做为中间格式 ...
- cannot find module 'cordova-common'
解决办法,重新安装cordova npm install -g cordova
- umbraco使用VS安装
新建——程序包管理器控制台——install - package umbracocms vs中的快捷键: ctrl+F5为调试: ctrl+shift+B生成解决方案: 打包前,App_data文件夹 ...