Gourmet Grazers

传送门

题目大意

约翰的奶牛对食物越来越挑剔了。现在,商店有\(M\) 份牧草可供出售,奶牛食量很大,每份牧草仅能供一头奶牛食用。第\(i\) 份牧草的价格为\(P_i\),口感为\(Q_i\)。约翰一共有N 头奶牛,他要为每头奶牛订购一份牧草,第\(i\)头奶牛要求它的牧草价格不低于\(A_i\),口感不低于\(B_i\)。请问,约翰应该如何为每头奶牛选择牧草,才能让他花的钱最少?

贪心。

贪心策略就是根据草的鲜嫩程度从大到小排序,选择草的鲜嫩程度和定价>=奶牛的需求并且定价最小的草。然后把草的定价累加,将选定的草删除。因为要查找在容器里与奶牛需求接近的草的定价,所以要用multiset维护,将草的鲜嫩程度>=奶牛甩进去,再二分查找定价最小的草,能够过全部数据。

#include <iostream>
#include <algorithm>
#include <queue>
#include <set>
#include <vector>
#include <cstring>
#include <cstdio>
using namespace std;
int n,m;
long long ans;
struct edge{
int dil,pri;
}cow[200000],com[200000];
bool cmp(edge x,edge y){
if(x.dil==y.dil)return x.pri>y.pri;
else return x.dil>y.dil;
}
struct cmb
{
bool operator()(int a, int b)
{
return a<b;
}
};
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)scanf("%d%d",&cow[i].pri,&cow[i].dil);
for(int i=1;i<=m;i++){
scanf("%d%d",&com[i].pri,&com[i].dil);
}
sort(cow+1,cow+1+n,cmp);
sort(com+1,com+1+m,cmp);
multiset<int, cmb>s;
multiset<int, cmb>::iterator it;
int j=1,flag=1;
for(int i=1;i<=n;i++){
while(com[j].dil>=cow[i].dil && j<=m) s.insert(com[j++].pri);
it = s.lower_bound(cow[i].pri);
if(it==s.end()){
flag=0;
break;
}
ans += *it;
s.erase(it);
}
if(!flag)puts("-1");
else
cout << ans;
return 0;
}

luogu 2869 挑剔的美食家的更多相关文章

  1. BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]

    1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 786  Solved: 391[Submit][S ...

  2. [BZOJ1691][Usaco2007 Dec]挑剔的美食家

    [BZOJ1691][Usaco2007 Dec]挑剔的美食家 试题描述 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返了. ...

  3. BZOJ 1691: [Usaco2007 Dec]挑剔的美食家( 平衡树 )

    按鲜嫩程度排个序, 从大到小处理, 用平衡树维护价值 ---------------------------------------------------------------------- #i ...

  4. BZOJ_1691_[Usaco2007 Dec]挑剔的美食家_贪心

    BZOJ_1691_[Usaco2007 Dec]挑剔的美食家_贪心 题意: 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返 ...

  5. 51nod 挑剔的美食家

    挑剔的美食家    基准时间限制:1 秒 空间限制:131072 KB 分值: 5 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一 ...

  6. bzoj1691[Usaco2007 Dec]挑剔的美食家 平衡树treap

    Description 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返了.现在,Farmer John不得不去牧草专供商那里 ...

  7. 「BZOJ1691」[Usaco2007 Dec] 挑剔的美食家 (Treap)

    Description 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返了.现在,Farmer John不得不去牧草专供商那里 ...

  8. 【BZOJ】1691: [Usaco2007 Dec]挑剔的美食家(set+贪心)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1691 懒得打平衡树了.... 而且multiset是很快的... 排到了rank1 T_T 贪心就是 ...

  9. 1691: [Usaco2007 Dec]挑剔的美食家

    Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 621  Solved: 280[Submit][Status][Discuss] Description ...

随机推荐

  1. php中的self关键字和this关键字的区别和联系

    php中的self关键字和this关键字的区别和联系 面向对象编程(OOP,Object OrientedProgramming)现已经成为编程人员的一项基本技能.利用OOP的思想进行PHP的高级编程 ...

  2. 【POJ 2828】Buy Tickets

    [题目链接] http://poj.org/problem?id=2828 [算法] 离线用线段树维护序列即可 [代码] #include <algorithm> #include < ...

  3. 什么是EL表达式

    转自:https://blog.csdn.net/hj7jay/article/details/51302466 1. EL表达式主要作用 EL表达式说白了,就是让JSP写起来更加方便,它属于JSP技 ...

  4. BZOJ 3674/BZOJ 3673 主席树

    思路: 主席树维护可持久化数组 剩下的就是普通的并查集了- //By SiriusRen #include <cstdio> #include <cstring> #inclu ...

  5. Java NIO(三)通道

    概念 通道(Channel)由java.nio.channels包定义的.channel表示IO源与目标打开的连接,类似流,但不能直接访问数据,只能与Buffer进行交互 通道类似流,但又有不同: 既 ...

  6. C语言“%”运算符

    C语言中运算符“%”是取余运算符,而非取模运算符.(运算符“%”在C/C++, JAVA中,为取余运算,而在Python中为取模运算) 对于一个C语言取余表达式a % b,设其值为result,有如下 ...

  7. com.sun.jdi.internalException:Unexpected JDWP Error:103////Method threw 'java.lang.IllegalArgumentEx

    retrofit2+RxJava2 的一些坑 今天开发新项目,本着积极向上的学习态度,经过多番考虑我决定使用retrofit2 + RxJava2来做为我的网络请求......神说:你的想法非常好 先 ...

  8. listview添加的头部布局超过一屏头部内容显示不全

    headView的实际高度超过一个屏幕,但是显示的结果只有一个屏幕,超过一个屏幕高度意外的部分显示不全. 只使用了listView.getRefreshable().addHeadView(headV ...

  9. pgpool中定义的数据库节点及pgpool支持的复制模式

    /* * The first DB node id appears in pgpool.conf or the first "live" DB * node otherwise.  ...

  10. Unity设置Turorials-Wide布局

    在bilibili上看关于UGUI官翻视频时,很喜欢对方的布局,自己照着改了下,改的步骤如下: 1, 先选用 2by3 布局 2, 把Project面板拖到Hierarchy下边 3, 把2列布局改成 ...