zoukankan      html  css  js  c++  java
  • HDU2111 Saving HDU 【贪心】

    Saving HDU

    Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 5245    Accepted Submission(s): 2397


    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的时候结束输入。
     

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

    Sample Input
    2 2 3 1 2 3 0
     

    Sample Output
    5
    water

    #include <stdio.h>
    #include <algorithm>
    #define maxn 102
    using std::sort;
    
    struct Node{
    	int w, v;
    } arr[maxn];
    
    bool cmp(Node a, Node b){
    	return a.w > b.w;
    }
    
    int main()
    {
    	int v, n, i, ans;
    	while(scanf("%d", &v), v){
    		scanf("%d", &n);
    		for(i = 0; i < n; ++i)
    			scanf("%d%d", &arr[i].w, &arr[i].v);
    		sort(arr, arr + n, cmp);
    		ans = 0;
    		for(i = 0; i < n; ++i)
    			if(arr[i].v <= v){
    				ans += arr[i].v * arr[i].w;
    				v -= arr[i].v;
    			}else {
    				ans += v * arr[i].w; break;
    			}
    		printf("%d
    ", ans);
    	}
    	return 0;
    }


  • 相关阅读:
    BEC listen and translation exercise 44
    中译英12
    BEC listen and translation exercise 43
    中译英11
    BEC listen and translation exercise 42
    中译英10
    BEC listen and translation exercise 41
    中译英9
    BEC listen and translation exercise 40
    中译英8
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4018981.html
Copyright © 2011-2022 走看看