传送门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【贪心 堆】的更多相关文章

  1. 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 ...

  2. [USACO 2009 Feb Gold] Fair Shuttle (贪心+优先队列)

    题目大意:有N个站点的轻轨站,有一个容量为C的列车起点在1号站点,终点在N号站点,有K组牛群,每组数量为Mi(1≤Mi≤N),行程起点和终点分别为Si和Ei(1≤Si<Ei≤N).计算最多有多少 ...

  3. [USACO12FEB]牛券Cow Coupons(堆,贪心)

    [USACO12FEB]牛券Cow Coupons(堆,贪心) 题目描述 Farmer John needs new cows! There are N cows for sale (1 <= ...

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

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

  5. [USACO 2018 Feb Gold] Tutorial

    Link: USACO 2018 Feb Gold 传送门 A: $dp[i][j][k]$表示前$i$个中有$j$个0且末位为$k$的最优解 状态数$O(n^3)$ #include <bit ...

  6. USACO 2012 Feb Cow Coupons

    2590: [Usaco2012 Feb]Cow Coupons Time Limit: 10 Sec Memory Limit: 128 MB Submit: 349 Solved: 181 [Su ...

  7. [Usaco 2012 Feb]Cow coupons牛券:反悔型贪心

    Description Farmer  John  needs  new  cows! There  are  N  cows  for  sale (1 <= N <= 50,000), ...

  8. bzoj3939 【USACO 2015 FEB GOLD 】cow hopscotch

    Description 就像人类喜欢玩"跳房子"的游戏,农民约翰的奶牛已经发明了该游戏的一个变种自己玩.由于笨拙的动物体重近一吨打,牛跳房子几乎总是以灾难告终,但这是没有阻止奶牛几 ...

  9. BZOJ1577 USACO 2009 Feb Gold 1.Fair Shuttle Solution

    权限题,不给传送门啦!在学校OJ上交的.. 有些不开心,又是一道贪心,又是一个高级数据结构的模板,又是看了别人的题解还写崩了QAQ,蒟蒻不需要理由呀. 正经题解: 首先,我们可以由「显然成立法」得出, ...

随机推荐

  1. 从头开始学Android之(二)—— Android版本

    前面大致的介绍了一下Android的Linux内核层,知道Android是Google在Linux基础上创建的一个应用于移动设备的系统,并在针对移动设备的特殊性,在Linux上做了一些相应的改动建立起 ...

  2. No module named '_sqlite3'问题解决

    Centos自带的python版本是2.7的,后面我自己装了3.5版本的,在创建应用的时候python manager.py startapp users 时,就会报No module named ' ...

  3. spring理解一

    spring基本工作原理例如以下: 1.查找bean配置文件 2.载入bean配置文件并解析生成中间表示BeanDefinition 3.注冊beanDefinition 4.假设是单例或lazy-i ...

  4. [iOS] dom解析xml数据,拿到&lt;&gt;里面的值

    <response result="success" timestamp="1338890206" cityver="1.0"> ...

  5. Apsara Clouder专项技能认证:实现调用API接口 (笔记)

  6. SpringMVC_基本配置 --跟海涛学SpringMVC(和自己在项目中的实际使用的对比)

    ☆依赖jar包: 1.Spring框架jar 包: 为了简单,将spring-framework-3.1.1.RELEASE-with-docs.zip/dist/下的所有jar包拷贝到项目的WEB- ...

  7. 在spring中映射X.hbm.xml文件的小技巧

    通常在spring中会这么写代码: <bean id="sessionFactory" class="org.springframework.orm.hiberna ...

  8. OutputStream和InputStream的区别 + 实现java序列化

    我们所说的流,都是针对内存说的,比如为什么打印到屏幕上就是System.out.println();而从屏幕等待用户输入的却是System.in呢?因为对于内存来说,把字符串打印到屏幕上是从内存流向屏 ...

  9. 大括号对struct进行初始化

    1 partial initialization 即所谓的部分初始化. 这个时候,无论该struct变量是static的还是automic的,未显式初始化的成员都会被初始化为默认值.

  10. maximize_window fullscreen_window minimize_window

    # Licensed to the Software Freedom Conservancy (SFC) under one# or more contributor license agreemen ...