HPU-ACM暑期培训第2周14级个人赛:Problem D【贪心】

Problem D

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other)

Total Submission(s) : 143   Accepted Submission(s) : 61

Problem Description

话说上回讲到海东集团面临内外交困,公司的元老也只剩下XHD夫妇二人了。显然,作为多年拼搏的商人,XHD不会坐以待毙的。

一天,当他正在苦思冥想解困良策的时候,突然想到了自己的传家宝,那是公司成立的时候,父亲作为贺礼送来的一个锦囊,徐父当时交代,不到万不得已的时候,不要打开它。“现在不正是最需要的时候吗?”,一边想,XHD一边找到了这个精心保管的锦囊,打开一看,里面只有一句话“杭城北麓千人洞有宝”。

二话不说,XHD拿起一个大口袋就出发了,这个千人洞他是知道的,小的时候,爸爸曾经带他来过这个隐蔽的路口,并告诉他,这是千人洞。他现在才明白爸爸当初这句话的含义。

尽管有点印象,XHD还是花了很大的精力才找到这个异常隐蔽的洞口,走进一看,几乎惊呆了,真的是眼花缭乱!不过尽管宝贝的种类不少,但是每种宝贝的量并不多,当然,每种宝贝单位体积的价格也不一样,为了挽救HDU,现在请你帮忙尽快计算出来XHD最多能带回多少价值的宝贝?(假设宝贝可以分割,分割后的价值和对应的体积成正比)

Input

输入包含多个测试实例,每个实例的第一行是两个整数v和n(v,n<100),分别表示口袋的容量和宝贝的种类,接着的n行每行包含2个整数pi和mi(0<PI,MI<10),分别表示某种宝贝的单价和对应的体积,V为0的时候结束输入。 div <>

Output

对于每个测试实例,请输出XHD最多能取回多少价值的宝贝,每个实例的输出占一行。

Sample Input

2 2
3 1
2 3
0

Sample Output

5

AC-code:
#include<stdio.h>
#include<algorithm>
using namespace std;

struct bao
{
	int pi,mi;
}ba[105];

bool cmp(bao a,bao b)
{
	return a.pi>b.pi;
}

int main()
{
	int v,n,i,sum;
	while(scanf("%d%d",&v,&n),v)
	{
		for(i=0;i<n;i++)
			scanf("%d%d",&ba[i].pi,&ba[i].mi);
		sort(ba,ba+n,cmp);
		sum=0;
		for(i=0;i<n;i++)
		{
			if(ba[i].mi<=v)
			{
				sum+=ba[i].pi*ba[i].mi;
				v-=ba[i].mi;
			}
			else
			{
				sum+=v*ba[i].pi;
				break;
			}
		}
		printf("%d\n",sum);
	}
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-01 00:08:10

HPU-ACM暑期培训第2周14级个人赛:Problem D【贪心】的相关文章

北大ACM暑期培训(1)——线段树,树状数组

本文出自:http://blog.csdn.net/svitter 今天ACM暑期实训开始了,今天讲述的内容是: 7.14  数据结构(一): 线段树,树状数组,二维线段树. 线段树:invertal tree (称为区间树更加合适) 作用:快速区间查询,用于解决区间统计的有关问题. 重点:同层节点不重叠. 每层最多有两个终止节点. 更新和进行区间分解的时间复杂度均为log(n); 方法:调用会多次使用递归更新插入查询: 空间:开空间的时候,一般情况下开4n大小,2*2log[n] - 1 <=

HPU-ACM暑期培训第2周个人赛:Problem E

Problem E Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 83   Accepted Submission(s) : 25 Problem Description 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报

140801暑期培训.txt

1.N!的求法(大菲波数类似) #include<stdio.h> #include<string.h> int s[110000]; int main() { int n; int i,j,k,l,m; while(scanf("%d",&n)!=EOF) { memset(s,0,sizeof(s)); l=1;      //控制位数 s[0]=1; for(i=1;i<=n;i++) { k=0;    //控制进位 for(j=0;j&l

暑期培训计划之个人计划

使用算法竞赛入门经典(刘汝佳编) 暑期培训计划之个人计划(7.22到8.13) 日期 周次         看书                                                      编程题目                                 看书完毕情况                        题目完毕情况         备注    2014.7.22 周二 第一章-第六章 (1-113页)  卡片游戏,简单枚举除法  完毕 完毕  2

140729暑期培训.txt

1.对于题目给出的已知数据是一个开始时间和一个结束时间的题 第一反应会是将开始时间进行排序 但这样做比较麻烦 做题应该多换几个角度和思维 将这类题按结束时间进行排序会简单的多 2.结构体 struct move           //struct是结构体函数 { int a;       //结构体成员 double b; char c; }num[100];       //一个结构体数组可以包含多个结构体成员,而且结构体成员的类型可以不同 int main() { for(i=0;i<n;

北大ACM暑期培训课程目录(五)

本文出自:http://blog.csdn.net/svitter netFlow Ford-Fulkerson 深度优先搜索,制作一个流网络. 部分路径可能不合理. 对上次dfs的边就行重新筛选.每条边来个反向边. 再来一次dfs 发现还能找到一条路径. dfs->abtray edge->dfs stop when no new stream 容量相等. *残余网络 寻找变数最少的增广路径 通过bfs寻找增广路劲 Edmonds-Karp最短增广路算法 依然不是很好的算法. POJ1273

140804暑期培训.txt

1.母函数 母函数,顾名思义,就是母亲,那就说明,在这个函数里面还有儿子,即子函数.说白了,就是子函数可以看作是母函数的一个子集. 而如何把这些子函数用一个母函数来表示呢?即所谓的通项公式. 通俗理解为:母函数就是一个多项式前面的系数的一个整体的集合,而子函数就是这个多项式每一项前面的系数. 母函数有普通型的,也有指数型的.而我们通常在做题当中碰到的大多是普通型的,指数型的较少,主要用来求解多重排列的题型 普通型的可以用在求解组合以及整数拆分的题型中. 例如,对于有n种物品,如果第i个物品有ki

140819暑期培训.txt

1.对于判断是否可以组成三角形 两边之和大于第三边&&两边之差小于第三边     (需要同时满足) 2. 1>r*r<x; 2>r<sqrt(x*1.0); 这两种形式,第二种要比第一种用的时间少.140819暑期培训.txt,布布扣,bubuko.com

忙于线下紧急培训,一周之内不更新课程,亲们见谅。一周之后“大补”

忙于线下培训,一周之内不更新课程,亲们见谅.一周之后"大补" 亲们还可以加我的QQ号码9278062或者我的群 106111081 10611108108 忙于线下紧急培训,一周之内不更新课程,亲们见谅.一周之后"大补",布布扣,bubuko.com