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

Description

To avoid unsightly burns while tanning, each of the C (1 ≤ C ≤ 2500) cows must cover her hide with sunscreen when they're at the beach. Cow i has a minimum and maximum SPF rating (1 ≤ minSPFi ≤ 1,000; minSPFi ≤ maxSPFi ≤
1,000) that will work. If the SPF rating is too low, the cow suffers sunburn; if the SPF rating is too high, the cow doesn't tan at all........

The cows have a picnic basket with L (1 ≤ L ≤ 2500) bottles of sunscreen lotion, each bottle i with an SPF rating SPFi (1 ≤ SPFi ≤ 1,000). Lotion bottle i can cover coveri cows
with lotion. A cow may lotion from only one bottle.

What is the maximum number of cows that can protect themselves while tanning given the available lotions?

Input

* Line 1: Two space-separated integers: C and L

* Lines 2..C+1: Line i describes cow i's lotion requires with two integers: minSPFi and maxSPFi 

* Lines C+2..C+L+1: Line i+C+1 describes a sunscreen lotion bottle i with space-separated integers: SPFi and coveri

Output

A single line with an integer that is the maximum number of cows that can be protected while tanning

Sample Input

3 2
3 10
2 5
1 5
6 2
4 1

Sample Output

2

有C头牛,每头牛有自己的承受阳光的最小值和最大值。现在有L瓶防晒霜,能够保持,一定数额的阳光。。。。然后还有一定的数量。问最多有多少头牛是被保护着的。

对牛进行排序,承受阳光小的放前面。

对防晒霜进行排序,保持阳光小的放在前面。

对每一种防晒液进行遍历,然后把能塞进来的牛即牛的最小值<防晒霜的值,都塞到优先队列中来。然后优先队列往外面是按照牛的最大值的递增顺序,先往外面弹小的,然后往外面弹大的。这样贪心就能够保证如果成功是最优的结果,失败了的话后面的防晒霜也不可能符合规格了。

代码:

#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#include <queue>
#include <map>
#pragma warning(disable:4996)
using namespace std; struct no1 {
int min_v;
int max_v;
}cow[2505],lotion[2505]; int num_c, num_l; bool cmp2(no1 x, no1 y)
{
if (x.min_v == y.min_v)
{
return x.max_v < y.max_v;
}
else
{
return x.min_v < y.min_v;
}
} class cmp
{
public:
bool operator()(int x, int y)
{
return x > y;
}
}; priority_queue<int, vector<int>, cmp>qu; int main()
{
int i,j,ans;
scanf("%d%d", &num_c, &num_l); for (i = 1; i <= num_c; i++)
{
scanf("%d%d", &cow[i].min_v, &cow[i].max_v);
}
for (i = 1; i <= num_l; i++)
{
scanf("%d%d", &lotion[i].min_v, &lotion[i].max_v);
}
sort(cow + 1, cow + num_c + 1, cmp2);
sort(lotion + 1, lotion + num_l + 1, cmp2); j = 1;
ans = 0; for (i = 1; i <= num_l;i++)
{
while (j <= num_c && cow[j].min_v <= lotion[i].min_v)
{
qu.push(cow[j].max_v);
j++;
}
while (qu.size() != 0 && lotion[i].max_v != 0)
{
int x = qu.top();
qu.pop();
if (x < lotion[i].min_v)
{
continue;
}
else
{
ans++;
lotion[i].max_v--;
}
}
}
cout << ans << endl;
return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

POJ 3614:Sunscreen 贪心+优先队列的更多相关文章

  1. poj -3614 Sunscreen(贪心 + 优先队列)

    http://poj.org/problem?id=3614 有c头奶牛在沙滩上晒太阳,每头奶牛能忍受的阳光强度有一个最大值(max_spf) 和最小值(min_spf),奶牛有L种防晒霜,每种可以固 ...

  2. POJ 3614 Sunscreen 贪心

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

  3. 优先队列:POJ No 3614 Sunscreen 贪心

    Sunscreen Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6410   Accepted: 2239 Descrip ...

  4. POJ 3614 Sunscreen 优先队列 贪心

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

  5. 【POJ 3614 Sunscreen】贪心 优先级队列

    题目链接:http://poj.org/problem?id=3614 题意:C头牛去晒太阳,每头牛有自己所限定的spf安全范围[min, max]:有L瓶防晒液,每瓶有自己的spf值和容量(能供几头 ...

  6. Sunscreen POJ - 3614(贪心)

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

  7. POJ 3614 Sunscreen (优先队列)

    题意:奶牛美容:有C头奶牛日光浴,每头奶牛分别需要minSPF_i和maxSPF_i单位强度之间的阳光.现有L种防晒霜,分别能使阳光强度稳定为SPF_i,其瓶数为cover_i.求最多满足多少头奶牛 ...

  8. POJ 3614 Sunscreen(贪心,区间单点匹配)

    把牛的SPF看作一个区间,防晒霜看作点.一个点可以匹配C[i]次,问最大匹配数.可以用图论做. 也可以贪心.贪心的思想是,把区间和点排序以后,考虑最左边的点,加入和这个点相交的区间, 并排除出界的区间 ...

  9. poj 3614 Sunscreen

                                                                                                        ...

随机推荐

  1. 「SP10628 COT - Count on a tree」

    主席树的综合运用题. 前置芝士 可持久化线段树:其实就是主席树了. LCA:最近公共祖先,本题需要在\(\log_2N\)及以内的时间复杂度内解决这个问题. 具体做法 主席树维护每个点到根节点这一条链 ...

  2. 手机wifi的mac地址是什么??

    简单来说,每个能够接入网络的设备,无论是平板.手机.电脑.电视都有一个专门的序号,这个序号就被称为MAC,正常来说可以看做是这款设备的唯一标识,手机里的MAC其实是特指Wi-Fi无线网卡的MAC地址. ...

  3. 执行SQL时出现: ORDER BY clause is not in GROUP BY clause and contains nonaggregated c

    注意: 采用navicat新建数据库时,需要将编码方式设置为,字符集:utf8 -- UTF-8 Unicode ,排序规则:utf8_general_ci 在运行sql语句时,出现以下问题: [Er ...

  4. mysql-e选项

    -e Execute command and quit 通过-e选项,可以在命令行中操作mysql 一些mysql设置的有密码,此时可以在my.ini(my.cnf)的[client]下面给出数据库的 ...

  5. uniGUI读取文本文件(08)

    为了测试没有数据库下的简单入门例子 procedure TMainForm.UniButton2Click(Sender: TObject); // 读取 文本 var aStringlist: Ts ...

  6. 在idea中设置指向源代码(scala)

    1.到官网下载scala源代码 点击如下链接下载源码:http://www.scala-lang.org/download/all.html 选择需要的版本点击进行下载,我选择的是2.11.8版本,如 ...

  7. PEtools PE操作工具类C++

    源码来自各大网友并非原创修改了部分函数 仅供参考(PE没源码参考应该是很吃力的) 暂未更新完持续更新中....... PETools.h //函数头 int GetFileLength(FILE *p ...

  8. 报警视图 报警窗口 报警指示器 的组态 PLC变量 事故信息 MW16 报警确认变量 MW18 转速变量 MW20 温度变量 MW22 用 M17.0 来模拟事故信息的最低位。用PLCSIM 给定温度为800 度 报警视图与报警窗口显示故障

    组态报警并用PLCSIM进行仿真 步骤1 : 组态离散变量报警 在PLC 的默认变量表中 创建变量"事故信息" 数据类型是word 绝对地址是MW16 同时建立 报警确认变量 MW ...

  9. 远程服务器使用tensorboard

    1 .由于服务器上tensorboard使用的端口是6006,因此,连接ssh时,将服务器的6006端口重定向到自己机器上的16006端口: ssh -L 16006:127.0.0.1:6006 u ...

  10. android sqlite 图片保存和读出 用流 转字节码

    原文:http://blog.sina.com.cn/s/blog_8cfbb99201012oqn.html package com.yiyiweixiao; import android.cont ...