POJ 3614 Sunscreen(贪心,区间单点匹配)
把牛的SPF看作一个区间,防晒霜看作点。一个点可以匹配C[i]次,问最大匹配数。可以用图论做。
也可以贪心。贪心的思想是,把区间和点排序以后,考虑最左边的点,加入和这个点相交的区间,
并排除出界的区间,优先选右端点最小的区间进行匹配。
对于已有的区间,左端点已经可以忽略,因为已经没有更靠左的点可以选。
而且右端点越大的选到的机会越大,所以放在后面选。
(如果一个区间要匹配多次的话贪心可能会出错
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<queue>
#include<vector>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<algorithm>
//#include<bits/stdc++.h>
using namespace std; const int maxn = ;
struct BinaryHEAP
{
int Heap[maxn];
int sz;
#define Cmp(a,b) ((a)<(b)) //small
void push(int x)
{
int i = ++sz;
while(i > ){
int p = i>>;
if(!Cmp(x,Heap[p])) break;
Heap[i] = Heap[p];
i = p;
}
Heap[i] = x;
} void pop()
{
int x = Heap[sz--];
int i = ;
while((i<<)<=sz){
int a = i<<, b = i<<|;
if(b<=sz && Cmp(Heap[b],Heap[a])) a = b;
if(!Cmp(Heap[a],x)) break;
Heap[i] = Heap[a];
i = a;
}
Heap[i] = x;
} int operator[](int x){ return Heap[x]; }
}q; #define MP make_pair
#define fi first
#define se second pair<int,int> cow[maxn], lot[maxn]; //#define LOCAL
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
int C,L; cin>>C>>L;
for(int i = ; i < C; i++){
scanf("%d%d",&cow[i].fi,&cow[i].se);
}
for(int i = ; i < L; i++){
scanf("%d%d",&lot[i].fi,&lot[i].se);
}
sort(lot,lot+L);
sort(cow,cow+C);
int ans = ;
for(int i = , j = ; i < L; i++){
while(j < C && cow[j].fi <= lot[i].fi) {
q.push(cow[j++].se);
}
while(q.sz && q[] < lot[i].fi ) q.pop();
while(q.sz && lot[i].se--){
ans++; q.pop();
}
}
printf("%d\n",ans);
return ;
}
POJ 3614 Sunscreen(贪心,区间单点匹配)的更多相关文章
- POJ 3614 Sunscreen 贪心
题目链接: http://poj.org/problem?id=3614 Sunscreen Time Limit: 1000MSMemory Limit: 65536K 问题描述 to avoid ...
- poj -3614 Sunscreen(贪心 + 优先队列)
http://poj.org/problem?id=3614 有c头奶牛在沙滩上晒太阳,每头奶牛能忍受的阳光强度有一个最大值(max_spf) 和最小值(min_spf),奶牛有L种防晒霜,每种可以固 ...
- 【POJ 3614 Sunscreen】贪心 优先级队列
题目链接:http://poj.org/problem?id=3614 题意:C头牛去晒太阳,每头牛有自己所限定的spf安全范围[min, max]:有L瓶防晒液,每瓶有自己的spf值和容量(能供几头 ...
- Sunscreen POJ - 3614(贪心)
To avoid unsightly burns while tanning, each of the C (1 ≤ C ≤ 2500) cows must cover her hide with s ...
- 优先队列:POJ No 3614 Sunscreen 贪心
Sunscreen Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6410 Accepted: 2239 Descrip ...
- POJ 3614 Sunscreen 优先队列 贪心
题意 有C个奶牛去晒太阳 (1 <=C <= 2500),每个奶牛各自能够忍受的阳光强度有一个最小值和一个最大值,太大就晒伤了,太小奶牛没感觉. 而刚开始的阳光的强度非常大,奶牛都承受不住 ...
- poj 3614 Sunscreen
...
- POJ 3614 Sunscreen (优先队列)
题意:奶牛美容:有C头奶牛日光浴,每头奶牛分别需要minSPF_i和maxSPF_i单位强度之间的阳光.现有L种防晒霜,分别能使阳光强度稳定为SPF_i,其瓶数为cover_i.求最多满足多少头奶牛 ...
- POJ.2299 Ultra-QuickSort (线段树 单点更新 区间求和 逆序对 离散化)
POJ.2299 Ultra-QuickSort (线段树 单点更新 区间求和 逆序对 离散化) 题意分析 前置技能 线段树求逆序对 离散化 线段树求逆序对已经说过了,具体方法请看这里 离散化 有些数 ...
随机推荐
- poj2689(素数区间筛法模板)
题目链接: http://poj.org/problem?id=2689 题意: 给出一个区间 [l, r] 求其中相邻的距离最近和最远的素数对 . 其中 1 <= l < r < ...
- uva 10817(数位dp)
uva 10817(数位dp) 某校有m个教师和n个求职者,需讲授s个课程(1<=s<=8, 1<=m<=20, 1<=n<=100).已知每人的工资c(10000 ...
- ios 支付宝支付集成
支付宝支付: 下载官方demo,把需要的framwork下载下来,在自己的工程中,新建文件夹,然后全部塞进去,到build phases中把需要的全部导入,其中xcode7以上需要多导入两个.a文件, ...
- thinkphp5文件上传问题
tp5中文件上传如果没有数据就会报错,所以要先做一个判断 //先接收文件数据 $isfile=$_FILES;//判断是否上传图片数据,如果没有上传数据二位数组中的name会为空,如下例:if($is ...
- centos7 yum快速安装php7.1
1. 安装nginx yum install nginx ##开启nginx service nginx start 2.安装MYSQLyum localinstall http://dev.mysq ...
- css奇技淫巧—box-shadow与outline绘制多重边框效果
css语法: box-shadow: h-shadow v-shadow blur spread color inset; 注释:box-shadow 向框添加一个或多个阴影.该属性是由逗号分隔的阴影 ...
- phpcms文件结构
主要目录部分 /admin 管理后台目录 -- /skin/ 后台样式 -- /templates/ 后台样式模板 /api api接口 /corpandresiz ...
- ElasticSearch最新版本下载地址
直接访问官方很慢,打不开,找到这个下载方法: ElasticSearch下载地址: https://download.elastic.co/elasticsearch/elasticsearch/el ...
- C#数据库(MSSQL)帮助类
/// <summary> /// 数据库帮助类 /// <author>Devin</author> /// </summary> public se ...
- NeatUpload 的使用
1 <httpModules> 2 <add name="UploadHttpModule" type="Brettle.Web.NeatUpload. ...