hdu acm-step 1.3.4 Saving HDU

  本题题意:有n种宝物,每个单位体积价值pi,体积mi,有一个体积为v的口袋,问最多可以装多少宝物。

  代码如下:

  

#include <cstdio>
#include <algorithm>
using namespace std;
struct Node
{
        int pi;
        int mi;
        bool operator<(const Node &node)
        {
                return pi < node.pi;
        }
};
Node a[100];
int main()
{
        int v,n;
        while(scanf("%d%d",&v,&n)&&v)
        {
                for(int i=0;i<n;i++)
                        scanf("%d%d",&a[i].pi,&a[i].mi);
                sort(a,a+n);
                int sum = 0;
                int price = 0;
                for(int i=n-1;i>=0;i--)
                {
                        if(sum+a[i].mi <= v){price+=a[i].pi*a[i].mi;sum+=a[i].mi;}
                        else{price+=(v-sum)*a[i].pi;sum=v;}
                        if(sum == v)break;
                }
                printf("%d\n",price);
        }
        return 0;
}

这道题比较简单就是个标准的贪心,排序选最大的依次装满就行了。

时间: 2024-08-04 06:18:00

hdu acm-step 1.3.4 Saving HDU的相关文章

HDOJ 2111. Saving HDU 贪心 结构体排序

Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7194    Accepted Submission(s): 3345 Problem Description 话说上回讲到海东集团面临内外交困,公司的元老也只剩下XHD夫妇二人了.显然,作为多年拼搏的商人,XHD不会坐以待毙的.  一天,当他正在苦思冥想解困良策的

HDU Saving HDU (贪心)

Saving HDU Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 40   Accepted Submission(s) : 26 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description 话说上回讲到海东集团面临内外交困,公司的元老也只剩下

Saving HDU hdu

话说上回讲到海东集团面临内外交困,公司的元老也只剩下XHD夫妇二人了.显然,作为多年拼搏的商人,XHD不会坐以待毙的. 一天,当他正在苦思冥想解困良策的时候,突然想到了自己的传家宝,那是公司成立的时候,父亲作为贺礼送来的一个锦囊,徐父当时交代,不到万不得已的时候,不要打开它."现在不正是最需要的时候吗?",一边想,XHD一边找到了这个精心保管的锦囊,打开一看,里面只有一句话"杭城北麓千人洞有宝". 二话不说,XHD拿起一个大口袋就出发了,这个千人洞他是知道的,小的时

HDU 2111 Saving HDU (贪心)

Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5233    Accepted Submission(s): 2387 Problem Description 话说上回讲到海东集团面临内外交困,公司的元老也只剩下XHD夫妇二人了.显然,作为多年拼搏的商人,XHD不会坐以待毙的. 一天,当他正在苦思冥想解困良策的时

HDU ACM 1103 Flo&#39;s Restaurant

分析:借助STL的min_element实现.每次更新最先被占用的桌子,具体见注释. #include<iostream> #include<algorithm> using namespace std; int main() { int A,B,C; char s[10]; int a[102],b[102],c[102]; int curtime,count,ans; int *p; //桌子最先空闲时间 while(cin>>A>>B>>C

HDU 2111 Saving HDU【贪心】

解题思路:排序后贪心,和fatmouse's  trade 类似 Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5837    Accepted Submission(s): 2692 Problem Description 话说上回讲到海东集团面临内外交困,公司的元老也只剩下XHD夫妇二人了.显然,作为多年拼搏

hdu acm 1425 sort(哈希表思想)

sort Time Limit: 6000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 25803    Accepted Submission(s): 7764 Problem Description 给你n个整数,请按从大到小的顺序输出其中前m大的数. Input 每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且

HDU ACM 1005 Number Sequence

Number Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 119732    Accepted Submission(s): 29072 Problem Description A number sequence is defined as follows:f(1) = 1, f(2) = 1, f(n) = (A

Saving HDU

mnesia在频繁操作数据的过程可能会报错:** WARNING ** Mnesia is overloaded: {dump_log, write_threshold},可以看出,mnesia应该是过载了.这个警告在mnesia dump操作会发生这个问题,表类型为disc_only_copies .disc_copies都可能会发生. 如何重现这个问题,例子的场景是多个进程同时在不断地mnesia:dirty_write/2 mnesia过载分析 1.抛出警告是在mnesia 增加dump

hdu acm 1166 敌兵布阵 (线段树)

敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 37903    Accepted Submission(s): 15985 Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务