博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【poj3614】Sunscreen
阅读量:5070 次
发布时间:2019-06-12

本文共 2249 字,大约阅读时间需要 7 分钟。

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 23 102 51 56 24 1

Sample Output

2

Source

 
/*    枚举+优先队列   给奶牛的minSPF从小到大排序    防晒霜从小到大排序     从最小的防晒霜枚举    把minSPF小于防晒霜的牛的maxSPF加到优先队列当中    优先队列最小值优先,取出最小值。(因为较大的maxSPF有较大的选择空间)     更新答案*/ #include
#include
#include
#include
using namespace std;priority_queue
q;struct cownode{ int minSPF,maxSPF;}cow[2510];//牛 int sun[1000000];//防晒霜 int comp(const cownode & a,const cownode & b){ return (a.minSPF
>C>>L; for (int i=1;i<=C;i++) cin>>cow[i].minSPF>>cow[i].maxSPF; int sunsum=1; for (int i=1;i<=L;i++) { cin>>SPF>>cover; for (int j=sunsum;j<=sunsum+cover;j++) sun[j]=SPF; sunsum+=cover; } sunsum--; sort(cow+1,cow+C+1,comp); sort(sun+1,sun+sunsum+1); for (int i=1;i<=sunsum;i++) //枚举防晒霜 { for (j=1;j<=C;j++)//枚举牛 if(cow[j].minSPF<=sun[i]) { q.push(-cow[j].maxSPF); cow[j].minSPF=10000000;//给个极大值 再也不会进队列了 } int t=0; if (!q.empty()) t=-q.top();//注意是-的q.top(); while (t
=sun[i] && t!=0) { ans++; q.pop();//别忘了删除 } } cout<
<

 

转载于:https://www.cnblogs.com/liumengyue/p/5191339.html

你可能感兴趣的文章
TF-IDF原理
查看>>
用JS制作博客页面背景随滚动渐变的效果
查看>>
JavaScript的迭代函数与迭代函数的实现
查看>>
一步步教你学会browserify
查看>>
Jmeter入门实例
查看>>
亲近用户—回归本质
查看>>
中文脏话识别的解决方案
查看>>
CSS之不常用但重要的样式总结
查看>>
Python编译错误总结
查看>>
URL编码与解码
查看>>
日常开发时遇到的一些坑(三)
查看>>
Eclipse 安装SVN插件
查看>>
深度学习
查看>>
TCP粘包问题及解决方案
查看>>
构建之法阅读笔记02
查看>>
添加按钮
查看>>
移动端页面开发适配 rem布局原理
查看>>
Ajax中文乱码问题解决方法(服务器端用servlet)
查看>>
会计电算化常考题目一
查看>>
阿里云服务器CentOS6.9安装Mysql
查看>>