51nod 挑剔的美食家
* 第1行: 2个用空格隔开的整数:N 和 M * 第2..N+1行: 第i+1行包含2个用空格隔开的整数:A_i、B_i * 第N+2..N+M+1行: 第j+N+1行包含2个用空格隔开的整数:C_i、D_i
* 第1行: 输出1个整数,表示使所有奶牛满意的最小花费。如果无论如何都无法 满足所有奶牛的需求,输出-1
4 7
1 1
2 3
1 4
4 2
3 2
2 1
4 3
5 2
5 4
2 6
4 4
12 还是STL大法好啊,一开始想了各种稀奇古怪的解法来做。。。。
思路:先将牛跟草按鲜嫩程度降序排序,然后枚举每一头牛,将鲜嫩程度大于等于该牛的存起来,然后找第一个大于等于该牛的价格的草;
并将用过的草删除掉不能再用(由于我们是按照鲜嫩程度降序排序,所以若是满足第i头牛,则一定可以满足第i+1头牛)
#include<iostream>
#include<algorithm>
#include<set>
using namespace std;
typedef long long LL;
const int maxn = ;
struct Task{
LL L, R;
bool operator<(const Task&a)const {
if (R == a.R)return L > a.L;
return R > a.R;
}
};
Task a[maxn], b[maxn];
LL n, m, ans = ;
bool solve()
{
multiset<LL> S;
multiset<LL>::iterator it;
int tmp = ;
for (int i = ; i <= n; i++) {
while (b[tmp].R >= a[i].R)S.insert(b[tmp++].L);
it = S.lower_bound(a[i].L);
if (it == S.end())return false;
ans += *it;
S.erase(it);
}
return true;
}
int main()
{
ios::sync_with_stdio(false);
while (cin >> n >> m) {
ans = 0;
for (int i = ; i <= n; i++)
cin >> a[i].L >> a[i].R;
for (int i = ; i <= m; i++)
cin >> b[i].L >> b[i].R;
sort(a + , a + n + );
sort(b + , b + m + );
if(solve()) cout << ans << endl;
else cout << "-1" << endl;
}
return ;
}
51nod 挑剔的美食家的更多相关文章
- BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]
1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 786 Solved: 391[Submit][S ...
- [BZOJ1691][Usaco2007 Dec]挑剔的美食家
[BZOJ1691][Usaco2007 Dec]挑剔的美食家 试题描述 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返了. ...
- BZOJ 1691: [Usaco2007 Dec]挑剔的美食家( 平衡树 )
按鲜嫩程度排个序, 从大到小处理, 用平衡树维护价值 ---------------------------------------------------------------------- #i ...
- BZOJ_1691_[Usaco2007 Dec]挑剔的美食家_贪心
BZOJ_1691_[Usaco2007 Dec]挑剔的美食家_贪心 题意: 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返 ...
- bzoj1691[Usaco2007 Dec]挑剔的美食家 平衡树treap
Description 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返了.现在,Farmer John不得不去牧草专供商那里 ...
- 「BZOJ1691」[Usaco2007 Dec] 挑剔的美食家 (Treap)
Description 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返了.现在,Farmer John不得不去牧草专供商那里 ...
- 【BZOJ】1691: [Usaco2007 Dec]挑剔的美食家(set+贪心)
http://www.lydsy.com/JudgeOnline/problem.php?id=1691 懒得打平衡树了.... 而且multiset是很快的... 排到了rank1 T_T 贪心就是 ...
- 1691: [Usaco2007 Dec]挑剔的美食家
Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 621 Solved: 280[Submit][Status][Discuss] Description ...
- bzoj 1691: [Usaco2007 Dec]挑剔的美食家
Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 621 Solved: 280[Submit][Status][Discuss] Description ...
随机推荐
- nginx简单使用
nginx开启./nginx重启./nginx -s reload关闭./nginx -s stop或quit
- 运行docker容器镜像2(指定容器启动时启动的脚本)
docker中启动容器有以下两种情况. 第一种是通过 # docker run containerid 启动一个容器. 第二种是重新启动已经关闭的容器. # docker start containe ...
- hdu1403 后缀数组
比较简单的应用. #include <stdio.h> #include <string.h> #define maxn 200002 int wa[maxn],wb[maxn ...
- MongoDB -- JAVA基本API操作
package com.example.mongodb.mongodb.demo; import com.mongodb.MongoClient; import com.mongodb.client. ...
- qt 自定义窗口显示鼠标划过的轨迹
鼠标事件分为四种: 1.按下 2.抬起 3.移动 4.双击 鼠标事件继承与QWidget void mouseDoubleClickEvent(QMouseEvent *event) void mou ...
- @loj - 2090@ 「ZJOI2016」旅行者
目录 @description@ @solution@ @accepted code@ @details@ @description@ 小 Y 来到了一个新的城市旅行.她发现了这个城市的布局是网格状的 ...
- 模板—FFT
卷积:$C[i]=\sum \limits_{j=0}^{i}A[j]*B[i-j]$可以画图理解一下其实就是交叉相乘的和. 卷积可以看作两个多项式乘积的形式,只不过求出的结果的项数不同. FFT讲解 ...
- 使用epoll实现简单的服务器
1. 头文件 #ifndef __TCP_SERVER_H__ #define __TCP_SERVER_H__ #include <unistd.h> #include <stdi ...
- tensorflow学习笔记(三十四):Saver(保存与加载模型)
Savertensorflow 中的 Saver 对象是用于 参数保存和恢复的.如何使用呢? 这里介绍了一些基本的用法. 官网中给出了这么一个例子: v1 = tf.Variable(..., nam ...
- idea使用积累
1.初试化配置参照http://m.blog.csdn.net/robertohuang/article/details/75042116,很详细. 2.idea中忽略.idea,.iml这两个文件 ...