poj3622_Gourmet Grazers
来源:互联网 发布:mac地址修改失败 编辑:程序博客网 时间:2024/06/18 13:15
http://poj.org/problem?id=3622
贪心,即排序后对于每头牛选择能满足他的最便宜的草,注意要从最挑剔的牛(即greenness最大的牛)开始,但是O(nm)会超时。O(nlogm)的做法跟O(nm)的一样,只是在选择草的时候用二分。
代码中因为借助了multiset,所以排序的时候只需按照greenness排序。
代码:
#include <cstdio>#include <set>#include <algorithm>using namespace std;const int N = 100000 + 10;struct NODE{ int p, g;}cow[N], grass[N];multiset<int> ms;bool cmp(const NODE &a, const NODE &b) //because of the ms, we needn't to sort by price{ return a.g <= b.g;}int main(){ int n, m; scanf("%d%d", &n, &m); for (int i = 0; i < n; i++) scanf("%d%d", &cow[i].p, &cow[i].g); for (int i = 0; i < m; i++) scanf("%d%d", &grass[i].p, &grass[i].g); sort(cow, cow+n, cmp); sort(grass, grass+m, cmp); int j = m - 1; long long sum = 0; bool flag = true; ms.clear(); for (int i = n-1; i >= 0; i--) { while (j >= 0 && grass[j].g >= cow[i].g) ms.insert(grass[j--].p); multiset<int>::iterator it = ms.lower_bound(cow[i].p); if (it == ms.end()) { flag = false; break; } else { sum += *it; ms.erase(it); } } printf("%lld\n", flag ? sum : -1);}
- poj3622_Gourmet Grazers
- poj 3622 Gourmet Grazers
- POJ 3184 Finicky Grazers
- poj 3622 Gourmet Grazers
- POJ 3622 Gourmet Grazers
- 【poj 3622】Gourmet Grazers
- poj3622 Gourmet Grazers 贪心,multiset
- POJ 3184 Finicky Grazers 笔记
- poj3622 Gourmet Grazers(贪心+Treap)
- POJ 3622 Gourmet Grazers(set)
- poj 3622 Gourmet Grazers STL之multiset
- POJ 3622 Gourmet Grazers (数据结构)
- USACO 2007 Dec Gourmet Grazers 挑剔的美食家
- poj 3622 Gourmet Grazers 挑剔的美食家(贪心)
- POJ - 3622/USACO - Dec07 Gold Gourmet Grazers 挑剔的美食家 重庆一中高2018级竞赛班第五次测试 2016.7.26 Problem 4
- xp安装补丁后,虚拟机fedora的samba服务连不上问题
- 110915 compareto
- SPRING的初始化方法执行先后顺序
- sqlserver 中位数计算方法
- SQL时间函数收藏
- poj3622_Gourmet Grazers
- 数据结构----关键路径详解(Java)
- 通过request.getContextPath获取绝对路径
- http抓包工具推荐
- Java synchronized是如何工作的
- 策略模式DEMO
- java区分中英文
- 文件不以%PDF-开始 解决方案
- Javascript 复制内容到剪贴板