https://vjudge.net/problem/POJ-3614

如果这不是优先队列专题里的,我可能不一定能想到这么做。

结构体命名得有点不好,解题中看着Edge这个不恰当的命名,思路老是断掉。

贪心策略:先对牛按from升序,对瓶子按w升序,优先队列是按to的小顶堆;

    然后枚举瓶子,只要当前牛的from<=当前瓶子的w就入队,直到不满足为止;

    然后在队伍里取出一个,判断它的是否to>=w以及cover数是否还够用。

 #include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<map>
#define lson l, m, rt<<1
#define rson m+1, r, rt<<1|1
#define INF 0x3f3f3f3f
typedef unsigned long long ll;
using namespace std;
int n, m;
struct Node{
int from, to;
int w;
friend bool operator<(const Node a, const Node b){
return a.to>b.to;//小顶堆按to排
}
}node[];
struct Edge{
int w, cover;
}edge[];
bool cmp(const Edge a, const Edge b)
{
return a.w<b.w;
}
bool cmp2(const Node a, const Node b)
{
return a.from<b.from;
}
int main()
{
priority_queue<Node> q;
cin >> n >> m;
for(int i = ; i < n; i++){
cin >> node[i].from >> node[i].to;
}
for(int i = ; i < m; i++){
cin >> edge[i].w >> edge[i].cover;
}
sort(edge, edge+m, cmp);
sort(node, node+n, cmp2);//一开始没加这个wa了好久
int k = , ans=;
for(int i = ; i < m; i++){//瓶子
while(k < n&&node[k].from<=edge[i].w){//左边界在它的前面就入队
q.push(node[k]);
k++;
}
while(!q.empty()){
Node t = q.top(), p;
q.pop();
if(t.to>=edge[i].w&&edge[i].cover>){//两种都满足可以ans++
edge[i].cover--;
ans++;
}
if(edge[i].cover == ) break; }
}
cout << ans << endl;
return ;
}

poj3614 Sunscreen(贪心+STL)的更多相关文章

  1. [POJ3614]Sunscreen (贪心)

    题意 (依然来自洛谷) 有C个奶牛去晒太阳 (1 <=C <= 2500),每个奶牛各自能够忍受的阳光强度有一个最小值和一个最大值,太大就晒伤了,太小奶牛没感觉. 而刚开始的阳光的强度非常 ...

  2. POJ3614 Sunscreen 贪心入门

    题目大意 给出一些区间和一些点,一个点如果在一个区间内,那么此两者可以匹配.问匹配数最大是多少. 题解 这样的题我们一般都是站在区间上去找与其配对的点.我们可以得到如下性质: 对于一段区间\([l_1 ...

  3. POJ--3614 Sunscreen(贪心)

    题目 3614 Sunscreen 2500*2500直接排序暴力贪心 #include<iostream> #include<cstring> #include<alg ...

  4. POJ3614 Sunscreen 优先队列+贪心

    Description To avoid unsightly burns while tanning, each of the C (1 ≤ C ≤ 2500) cows must cover her ...

  5. poj3614 Sunscreen【贪心】

    Sunscreen Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11772   Accepted: 4143 Descri ...

  6. 【POJ3614 Sunscreen】【贪心】

    题面: 有c头牛,需要的亮度在[min_ci,max_ci]中,有n种药,每种m瓶,可以使亮度变为v 问最多能满足多少头牛 算法 我们自然考虑贪心,我们首先对每头牛的min进行排序,然后对于每种药,将 ...

  7. POJ 3614 Sunscreen 贪心

    题目链接: http://poj.org/problem?id=3614 Sunscreen Time Limit: 1000MSMemory Limit: 65536K 问题描述 to avoid ...

  8. Codeforces Round #595 (Div. 3)D1D2 贪心 STL

    一道用STL的贪心,正好可以用来学习使用STL库 题目大意:给出n条可以内含,相交,分离的线段,如果重叠条数超过k次则为坏点,n,k<2e5 所以我们贪心的想我们从左往右遍历,如果重合部分条数超 ...

  9. POJ 3614:Sunscreen 贪心+优先队列

    Sunscreen Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5378   Accepted: 1864 Descrip ...

随机推荐

  1. kudu的写数据流程

    写入操作是指需进行插入.更新或删除操作的一组行.需要注意的事项是Kudu强制执行主关键字的唯一性,主关键字是可以更改行的唯一标识符.为了强制执行此约束条件,Kudu必须以不同的方式处理插入和更新操作, ...

  2. LAMP编译安装部分

    # yum install -y apr-devel apr-util-devel pcre-devel # wget http://mirror.bit.edu.cn/apache/httpd/ht ...

  3. lvs - mask标记

    将两个服务绑定在一个集群服务中 如何将两种请求绑定在一个集群中通过一个director来调度, 这里需要iptable工具配合实现.首先在prerouting链上做一个标记,通过标记来调度 起两个服务 ...

  4. js 时间动画优化

    function moveDivTimeBasedImprove(div, fps) { var left = 0; var current = +new Date; var previous = + ...

  5. spring开发需要的配置文件

    1,applicationContext-dao.xml <?xml version="1.0" encoding="UTF-8"?><bea ...

  6. 空间分析工具:GIS

    1.数据空间 数据空间是指用来表示空间实体的的位置.几何特征及其属性特征的数据. 位置:经纬度.地址.相对位置: 几何特征:点.线.面.形状: 属性特征:面积.周长.人口.经济等属性. POI数据.O ...

  7. LeetCode 234. 回文链表

    class Solution { public: bool isPalindrome(ListNode* head) { deque<int> d1, d2; ListNode* p = ...

  8. Uniform Generator

    Computer simulations often require random numbers. One way to generate pseudo-random numbers is via ...

  9. linux的文件打包与压缩

    简介 Linux 上常用的压缩/解压工具,介绍了zip.rar.tar的使用. 文件打包和压缩 Linux 上的压缩包文件格式,除了 Windows 最常见的*.zip.*.rar..7z 后缀的压缩 ...

  10. python和yum同时卸载后的安装方法

    centos 7如果卸载了yum和python之后恢复的办法(该方法已经测试). 1. 安装python. python-libs-2.7.5-34.el7.x86_64.rpm python-2.7 ...