博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AcWing 超市
阅读量:4485 次
发布时间:2019-06-08

本文共 1442 字,大约阅读时间需要 4 分钟。

AcWing 超市

Description

  • 超市里有N件商品,每个商品都有利润pi和过期时间di,每天只能卖一件商品,过期商品(即当天di<=0)不能再卖。

    求合理安排每天卖的商品的情况下,可以得到的最大收益是多少。

Input

  • 输入包含多组测试用例。

    每组测试用例,以输入整数N开始,接下里输入N对pi和,分别代表第i件商品的利润和过期时间。

    在输入中,数据之间可以自由穿插任意个空格或空行,输入至文件结尾时终止输入,保证数据正确。

Output

  • 对于每组产品,输出一个该组的最大收益值。

    每个结果占一行。

Sample Input

4  50 2  10 1   20 2   30 17  20 1   2 1   10 3  100 2   8 2   5 20  50 10

Sample Output

80185

Data Size

  • 0≤N≤10000,
    1≤pi,di≤10000

题解:

  • 贪心 + 二叉堆。
  • 容易想到,在不卖出过期商品的前提下,尽量卖利润大的物品。所以先按物品过期时间排序,然后可以考虑用一个容器逐渐将每一个商品丢进去,同时动态维护容器使其是合法且最优的。
  • 具体就是用小根堆维护,堆里装物品权值。排序后扫描每个商品:
    1. 若当前商品过期时间 == 堆的size,那么看看能否将堆顶替换掉,能就换走。
    2. 若当前商品过期时间 > 堆的size,直接插入。
  • 最终堆中所有元素之和即为所求。
#include 
#include
#include
#include
#define N 10005#define int long longusing namespace std;struct A {int v, t;} a[N];int n, ans;priority_queue
, greater
> que;int read(){ int x = 0; char c = getchar(); while(c < '0' || c > '9') c = getchar(); while(c >= '0' && c <= '9') {x = x * 10 + c - '0'; c = getchar();} return x;}bool cmp(A x, A y) {return x.t < y.t;}signed main(){ while(scanf("%lld", &n) == 1) { ans = 0; for(int i = 1; i <= n; i++) a[i].v = read(), a[i].t = read(); sort(a + 1, a + 1 + n, cmp); for(int i = 1; i <= n; i++) { if(a[i].t > (int)que.size()) que.push(a[i].v); else if(a[i].v > que.top()) que.pop(), que.push(a[i].v); } while(que.size()) ans += que.top(), que.pop(); printf("%lld\n", ans); } return 0;}

转载于:https://www.cnblogs.com/BigYellowDog/p/11349491.html

你可能感兴趣的文章
11号团队-团队任务5:项目总结会
查看>>
CPU运行原理
查看>>
UVA529 Addition Chains
查看>>
django项目部署在Apache服务器中,静态文件路径的注意点
查看>>
Unity检查更新
查看>>
转:objective-c 协议和委托
查看>>
day 55 jQuery 之事件 绑定等
查看>>
前端开源项目周报0221
查看>>
Cinder 挂盘创建不成功解决方案日志中报错
查看>>
[CGGeometry]CGRectInset解析
查看>>
虚机克隆搭建kafka服务器集群
查看>>
二叉排序树
查看>>
Linux 基础入门二
查看>>
最基本的Git使用方式(eclipse上)
查看>>
写给2013的自己
查看>>
Laravel-lumen 配置JWT
查看>>
MySQL常用存储引擎:MyISAM与InnoDB之华山论剑
查看>>
MVC5+EF6 --自定义控制Action访问权限
查看>>
[CF786B] Legacy
查看>>
Spring 注解@Component,@Service,@Controller,@Repository
查看>>