[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;
}
[USACO 2012 Feb Gold] Cow Coupons【贪心 堆】的更多相关文章
- bzoj2581 [USACO 2012 Jan Gold] Cow Run【And-Or Tree】
传送门1:http://www.usaco.org/index.php?page=viewproblem2&cpid=110 传送门2:http://www.lydsy.com/JudgeOn ...
- [USACO 2009 Feb Gold] Fair Shuttle (贪心+优先队列)
题目大意:有N个站点的轻轨站,有一个容量为C的列车起点在1号站点,终点在N号站点,有K组牛群,每组数量为Mi(1≤Mi≤N),行程起点和终点分别为Si和Ei(1≤Si<Ei≤N).计算最多有多少 ...
- [USACO12FEB]牛券Cow Coupons(堆,贪心)
[USACO12FEB]牛券Cow Coupons(堆,贪心) 题目描述 Farmer John needs new cows! There are N cows for sale (1 <= ...
- USACO翻译:USACO 2012 FEB Silver三题
USACO 2012 FEB SILVER 一.题目概览 中文题目名称 矩形草地 奶牛IDs 搬家 英文题目名称 planting cowids relocate 可执行文件名 planting co ...
- [USACO 2018 Feb Gold] Tutorial
Link: USACO 2018 Feb Gold 传送门 A: $dp[i][j][k]$表示前$i$个中有$j$个0且末位为$k$的最优解 状态数$O(n^3)$ #include <bit ...
- USACO 2012 Feb Cow Coupons
2590: [Usaco2012 Feb]Cow Coupons Time Limit: 10 Sec Memory Limit: 128 MB Submit: 349 Solved: 181 [Su ...
- [Usaco 2012 Feb]Cow coupons牛券:反悔型贪心
Description Farmer John needs new cows! There are N cows for sale (1 <= N <= 50,000), ...
- bzoj3939 【USACO 2015 FEB GOLD 】cow hopscotch
Description 就像人类喜欢玩"跳房子"的游戏,农民约翰的奶牛已经发明了该游戏的一个变种自己玩.由于笨拙的动物体重近一吨打,牛跳房子几乎总是以灾难告终,但这是没有阻止奶牛几 ...
- BZOJ1577 USACO 2009 Feb Gold 1.Fair Shuttle Solution
权限题,不给传送门啦!在学校OJ上交的.. 有些不开心,又是一道贪心,又是一个高级数据结构的模板,又是看了别人的题解还写崩了QAQ,蒟蒻不需要理由呀. 正经题解: 首先,我们可以由「显然成立法」得出, ...
随机推荐
- http返回写入问题
1.服务器返回写的数据全是通过response对象,response.getWriter().print(msg);这样就返回写出数据了. 比如: logger.info("encrypte ...
- .NET作品集:基于svn 的.net 持续集成工具
作品背景 这个.net 持续集成作品还是在2014年的时候从事.net 软件项目开发的时候做的,当时部门还用着vs2008用vb.net做项目(现在也是),项目代码极混乱,版本工具用的vss,而且用的 ...
- Linux 思维导图
1.Linux学习路径: 2.Linux桌面介绍: 3.FHS(文件系统目录标准): 以上三张图,都是在学习实验楼上的课程--Linux 基础入门,教程里面看到的. 4.Linux需要特别注意的目录: ...
- 【转】如何查看Oracle客户端版本及位数(Windows系统)
一.方法一 查看oracle客户端版本:sqlplus -v 查看oracle客户端版本:sqlplus /nolog命令 Step 1:运行sqlplus /nolog命令,如果你服务器安装了多个客 ...
- 我们工作到底为了什么 (HP大中华区总裁孙振耀退休感言)
我们工作到底为了什么 (HP大中华区总裁孙振耀退休感言) 一.关于工作与生活 我有个有趣的观察,外企公司多的是25-35岁的白领,40岁以上的员工很少,二三十岁的外企员工是意气风发的,但外企公司 ...
- 在CentOS上把Nginx从1.2.4升级到1.6.0
在CentOS上升级把Nginx从1.2.4升级到1.6.0 摘要:本文记录了在CentOS 6.3上,把Nginx从1.2.4升级到1.6.0的过程. 1. 概述 在我做的一个项目中,最近我对生产服 ...
- PHP中常见的header类型
<?php // 使用 mime_content_type() 查看 $mimetypes=array( 'ez' => 'application/andrew-inset', 'hqx' ...
- android抓log
1.Logcat(能截取除了Kernel以外的所有Log信息),连接USB到电脑上,执行如下命令:User版本也可以使用adb logcat –v time >c:\ logcat.txtadb ...
- 目标跟踪之高斯混合模型---cv实现
#include <stdio.h>#include <cv.h>#include <cxcore.h>#include <highgui.h>#inc ...
- ASP.NET MVC中为DropDownListFor设置选中项的方法
在MVC中,当涉及到强类型编辑页,如果有select元素,需要根据当前Model的某个属性值,让Select的某项选中.本篇只整理思路,不涉及完整代码. □ 思路 往前台视图传的类型是List< ...