标签:include 防晒 降序 lotion 防晒霜 MAXN 110 排序
原题链接:110. 防晒
解题思路
贪心+排序
我们首先将奶牛可以承受的最小值,递减排序,也就是降序排列,然后将防晒霜固定的值,递减排序,还是降序排列.
对于每一个头奶牛而言,当然是要选择目前来说满足条件的最差的防晒霜,什么最差的定义,就是选择满足奶牛条件的SPF最大的那一瓶防晒霜.
注意:降序排序,保证对于每一头牛而言,它用的是,可以使用的最差的防晒霜,因为值越小的防晒霜,有可能让更多的牛使用.而升序排列,就恰好反了.
样例代码
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <queue>
using namespace std;
#define MAXN 20000
int n,m,ans;
pair<int,int> cow[MAXN],lotion[MAXN];
priority_queue<int> q;
void process(){
int i,i1;
while(!q.empty()) q.pop();
sort(cow,cow+n);
sort(lotion,lotion+m);
for(ans=i=i1=0;i<m;i++){
while((i1<n)&&(cow[i1].first<=lotion[i].first))
q.push(-cow[i1++].second);
while((!q.empty())&&(-(q.top())<lotion[i].first))
q.pop();
while((!q.empty())&&(lotion[i].second--)){
ans++;
q.pop();
}
}
}
int main(){
int i,j;
freopen("tanning.in","r",stdin);
freopen("tanning.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
scanf("%d%d",&cow[i].first,&cow[i].second);
for(i=0;i<m;i++)
scanf("%d%d",&lotion[i].first,&lotion[i].second);
ans=0;
process();
printf("%d\n",ans);
return 0;
}
标签:include,防晒,降序,lotion,防晒霜,MAXN,110,排序 来源: https://www.cnblogs.com/hnkjdx-ssf/p/14285399.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。