[USACO 2012 Feb Gold] Cow Coupons【贪心 堆】
传送门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【贪心 堆】相关推荐
- USACO翻译:USACO 2012 FEB Silver三题
USACO 2012 FEB SILVER 一.题目概览 中文题目名称 矩形草地 奶牛IDs 搬家 英文题目名称 planting cowids relocate 可执行文件名 planting co ...
- BZOJ1782[USACO 2010 Feb Gold 3.Slowing down]——dfs+treap
题目描述 每天Farmer John的N头奶牛(1 <= N <= 100000,编号1-N)从粮仓走向他的自己的牧场.牧场构成了一棵树,粮仓在1号牧场.恰好有N-1条道路直接连接着牧场, ...
- [USACO 2017 Feb Gold] Tutorial
Link: 传送门 A: 分层图最短路(其实就是最短路转移时多记录一维的数据 #include <bits/stdc++.h>using namespace std; #define X ...
- BZOJ1579 USACO 2009 Feb Gold 3.Revamping Trails Solution
标题效果:一个N积分m无向图边.它可以是路径k右边缘值变0,确定此时1-n最短路径长度. Sol:我以为我们考虑分层图,图复制k+1部分,每间0~k一层.代表在这个时候已经过去"自由边缘&q ...
- [USACO 2012 Feb B]Moo - 规律
评测网址 题意: 某字符串由m o 两个字符构成 而且构成的字符串为前一个字符串 + m + o * (i+2) + 前一个字符串 *(i+2)指的是数量 问字符串第n个字符是什么 思路: 在从一个字 ...
- [USACO 2012 January Gold] Video Game Combos
题目描述 贝西在玩电脑游戏!在游戏中,键盘的'A','B'和'C'三个按键是唯一可用的.贝西可以根据她的需要随意按这几个键.但是游戏里只有N(1 <= N<= 20)种招式.一个招式命令就 ...
- 专题突破之反悔贪心——建筑抢修,Cow Coupons G, Voting (Hard Version),Cardboard Box
文章目录 [JSOI2007]建筑抢修 [USACO12FEB]Cow Coupons G CF1251E2 Voting (Hard Version) CF436E Cardboard Box [J ...
- P2870 [USACO07DEC]最佳牛线,黄金Best Cow Line, Gold(加强版)(贪心+hash哈希)
P2870 [USACO07DEC]最佳牛线,黄金Best Cow Line, Gold(加强版)(贪心+hash哈希) 洛谷上这道水题丧心病狂地把数据范围加到了500000 普通的做法肯定A不了了, ...
- USACO翻译:USACO 2014 FEB SILVER 三题
USACO 2014 FEB SILVER 一.题目概览 中文题目名称 自动打字 路障 神秘代码 英文题目名称 auto rblock scode 可执行文件名 auto rblock scode 输 ...
- 1633: [Usaco2007 Feb]The Cow Lexicon 牛的词典(DP)
1633: [Usaco2007 Feb]The Cow Lexicon 牛的词典 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 633 Solved ...
最新文章
- linux上安装nero4j 关系数据库
- 计算机应用技能大赛海报,2017年计算机应用工程系技能大赛汇总 ——大赛点亮人生 技能改变命运...
- 将Windows 8.1 系统窗口背景设置成淡绿色?
- 转载:DataTable使用技巧总结
- C# MVC的博客开发(二)登录
- php将数组值用 分开,PHP将数组中的多个值替换为另一个数组
- Bailian4003 十六进制转十进制【入门】
- 荷兰铁路在采纳敏捷和精益中的做法
- java语言程序设计二级_计算机二级Java语言程序设计试题
- 分享几个设计精美电路图的工具
- 个人云盘:阿里云无影,百度网盘、腾讯微云争霸?
- IDM下载浮动条使用详解
- 基于CIM的新型智慧城市发展政策解析
- 《单域名下整合动网、动易、OBlog程序》
- boost::geometry简介,真香
- java转行失败_转行学JAVA,成功和失败的原因
- 某宝付费买的价值上万的60G的Python学习资源,0基础轻松赚钱到手软,请低调使用,禁止外传~...
- Hive on Hbase
- Apache ServiceComb Kie | 一个语义型配置中心
- 小米手机10 青春版(Mi 10 Lite Zoom)TWRP刷入12.5版教程
热门文章
- python数字转换成中文大写_python中如何将货币数字转化成汉字大写金额
- Redis 6.0 源码阅读笔记(3) -- 概述 Redis 重要数据结构及其 6 种数据类型
- truncate table 与delete table区别
- 小程序支付完整过程。足够详细!
- python面值组合_算法题 - 拼凑面额 - Python
- java中卫语句详解
- mongodb 如何更改端口号_Centos7配置MongoDB以及端口修改
- dell笔记本驱动安装失败_声卡驱动安装失败的解决方法
- 3.3通过EmbeddedServletContainerCustomizer调用Tomcat
- [渝粤教育] 云南大学 內部控制理论与实务 参考 资料