传送门1:http://www.usaco.org/index.php?page=viewproblem2&cpid=118

传送门2:http://www.lydsy.com/JudgeOnline/problem.php?id=2590

又挂了一道贪心,好烦啊。

这一题应该要想到“撤回”操作就好办了。假设现在已经没有优惠券了,那么如果你想以优惠价格买下一头牛,就要撤回以前的用优惠券买的牛,具体就是加回p[i] - c[i]就行了,可以理解为花这么多钱买一张优惠券。然后就是维护3个小根堆了。

#include <cstdio>
#include <queue>const int maxn = 50005;int n, k, ans;
long long m, pp[maxn], cc[maxn];
bool book[maxn];
struct st1 {long long data;int id;bool operator<(const st1 & rhs) const {return data > rhs.data;}
};
std::priority_queue<st1> p, c;
struct st2 {long long data;bool operator<(const st2 & rhs) const {return data > rhs.data;}
};
std::priority_queue<st2> coupon;int main(void) {freopen("coupons.in", "r", stdin);freopen("coupons.out", "w", stdout);scanf("%d%d%I64d", &n, &k, &m);while (k--) {coupon.push((st2){0});}for (int i = 1; i <= n; ++i) {scanf("%I64d%I64d", pp + i, cc + i);p.push((st1){pp[i], i});c.push((st1){cc[i], i});}while (m > 0 && ans < n) {while (book[p.top().id]) {p.pop();}while (book[c.top().id]) {c.pop();}if (p.top().data < c.top().data + coupon.top().data) {m -= p.top().data;if (m <= 0) {break;}book[p.top().id] = true;p.pop();}else {m -= (c.top().data + coupon.top().data);if (m <= 0) {break;}coupon.pop();coupon.push((st2){pp[c.top().id] - c.top().data});book[c.top().id] = true;c.pop();}++ans;}printf("%d\n", ans);return 0;
}

  

转载于:https://www.cnblogs.com/ciao-sora/p/6044220.html

[USACO 2012 Feb Gold] Cow Coupons【贪心 堆】相关推荐

  1. USACO翻译:USACO 2012 FEB Silver三题

    USACO 2012 FEB SILVER 一.题目概览 中文题目名称 矩形草地 奶牛IDs 搬家 英文题目名称 planting cowids relocate 可执行文件名 planting co ...

  2. BZOJ1782[USACO 2010 Feb Gold 3.Slowing down]——dfs+treap

    题目描述 每天Farmer John的N头奶牛(1 <= N <= 100000,编号1-N)从粮仓走向他的自己的牧场.牧场构成了一棵树,粮仓在1号牧场.恰好有N-1条道路直接连接着牧场, ...

  3. [USACO 2017 Feb Gold] Tutorial

    Link: 传送门 A: 分层图最短路(其实就是最短路转移时多记录一维的数据 #include <bits/stdc++.h>using namespace std; #define X ...

  4. BZOJ1579 USACO 2009 Feb Gold 3.Revamping Trails Solution

    标题效果:一个N积分m无向图边.它可以是路径k右边缘值变0,确定此时1-n最短路径长度. Sol:我以为我们考虑分层图,图复制k+1部分,每间0~k一层.代表在这个时候已经过去"自由边缘&q ...

  5. [USACO 2012 Feb B]Moo - 规律

    评测网址 题意: 某字符串由m o 两个字符构成 而且构成的字符串为前一个字符串 + m + o * (i+2) + 前一个字符串 *(i+2)指的是数量 问字符串第n个字符是什么 思路: 在从一个字 ...

  6. [USACO 2012 January Gold] Video Game Combos

    题目描述 贝西在玩电脑游戏!在游戏中,键盘的'A','B'和'C'三个按键是唯一可用的.贝西可以根据她的需要随意按这几个键.但是游戏里只有N(1 <= N<= 20)种招式.一个招式命令就 ...

  7. 专题突破之反悔贪心——建筑抢修,Cow Coupons G, Voting (Hard Version),Cardboard Box

    文章目录 [JSOI2007]建筑抢修 [USACO12FEB]Cow Coupons G CF1251E2 Voting (Hard Version) CF436E Cardboard Box [J ...

  8. P2870 [USACO07DEC]最佳牛线,黄金Best Cow Line, Gold(加强版)(贪心+hash哈希)

    P2870 [USACO07DEC]最佳牛线,黄金Best Cow Line, Gold(加强版)(贪心+hash哈希) 洛谷上这道水题丧心病狂地把数据范围加到了500000 普通的做法肯定A不了了, ...

  9. USACO翻译:USACO 2014 FEB SILVER 三题

    USACO 2014 FEB SILVER 一.题目概览 中文题目名称 自动打字 路障 神秘代码 英文题目名称 auto rblock scode 可执行文件名 auto rblock scode 输 ...

  10. 1633: [Usaco2007 Feb]The Cow Lexicon 牛的词典(DP)

    1633: [Usaco2007 Feb]The Cow Lexicon 牛的词典 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 633  Solved ...

最新文章

  1. linux上安装nero4j 关系数据库
  2. 计算机应用技能大赛海报,2017年计算机应用工程系技能大赛汇总 ——大赛点亮人生 技能改变命运...
  3. 将Windows 8.1 系统窗口背景设置成淡绿色?
  4. 转载:DataTable使用技巧总结
  5. C# MVC的博客开发(二)登录
  6. php将数组值用 分开,PHP将数组中的多个值替换为另一个数组
  7. Bailian4003 十六进制转十进制【入门】
  8. 荷兰铁路在采纳敏捷和精益中的做法
  9. java语言程序设计二级_计算机二级Java语言程序设计试题
  10. 分享几个设计精美电路图的工具
  11. 个人云盘:阿里云无影,百度网盘、腾讯微云争霸?
  12. IDM下载浮动条使用详解
  13. 基于CIM的新型智慧城市发展政策解析
  14. 《单域名下整合动网、动易、OBlog程序》
  15. boost::geometry简介,真香
  16. java转行失败_转行学JAVA,成功和失败的原因
  17. 某宝付费买的价值上万的60G的Python学习资源,0基础轻松赚钱到手软,请低调使用,禁止外传~...
  18. Hive on Hbase
  19. Apache ServiceComb Kie | 一个语义型配置中心
  20. 小米手机10 青春版(Mi 10 Lite Zoom)TWRP刷入12.5版教程

热门文章

  1. python数字转换成中文大写_python中如何将货币数字转化成汉字大写金额
  2. Redis 6.0 源码阅读笔记(3) -- 概述 Redis 重要数据结构及其 6 种数据类型
  3. truncate table 与delete table区别
  4. 小程序支付完整过程。足够详细!
  5. python面值组合_算法题 - 拼凑面额 - Python
  6. java中卫语句详解
  7. mongodb 如何更改端口号_Centos7配置MongoDB以及端口修改
  8. dell笔记本驱动安装失败_声卡驱动安装失败的解决方法
  9. 3.3通过EmbeddedServletContainerCustomizer调用Tomcat
  10. [渝粤教育] 云南大学 內部控制理论与实务 参考 资料