zoukankan      html  css  js  c++  java
  • POJ 3614 Sunscreen (优先队列)

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

    思路:

    将奶牛按照阳光强度的最小值从小到大排序。将防晒霜也按照能固定的阳光强度从小到大排序。

    从最小的防晒霜枚举,将所有符合最小值小于等于该防晒霜的奶牛的最大值放入优先队列之中。

    然后优先队列是小值先出,所以就可以将这些最大值中的最小的取出来。更新答案。

    #include <iostream>  
    #include <algorithm>  
    #include <cstring>  
    #include <cstdio>  
    #include <map>  
    #include <vector>  
    #include <queue>  
    #define MAXN 2555   
    using namespace std;
    int C, L;
    typedef pair<int, int> P;
    priority_queue<int, vector<int>, greater<int> > q;
    P cow[MAXN], bot[MAXN];
    int main()
    {
    	scanf("%d%d", &C, &L);
    	for (int i = 0; i < C; i++) scanf("%d%d", &cow[i].first, &cow[i].second);
    	for (int i = 0; i < L; i++) scanf("%d%d", &bot[i].first, &bot[i].second);
    	sort(cow, cow + C);
    	sort(bot, bot + L);
    	int j = 0, ans = 0;
    	for (int i = 0; i < L; i++)
    	{
    		while (j < C && cow[j].first <= bot[i].first)
    		{
    			q.push(cow[j].second);
    			j++;
    		}
    		while (!q.empty() && bot[i].second)
    		{
    			int x = q.top();
    			q.pop();
    			if (x < bot[i].first) continue;
    			ans++;
    			bot[i].second--;
    		}
    	}
    	printf("%d
    ", ans);
    	return 0;
    }
  • 相关阅读:
    APP端上传文件至服务器后台,WEB端上传文件存储到服务器
    freemarker模板引擎
    JEECG开发总结
    spring的基本配置
    jeecg解析xml文件
    jeecg查询备份
    jeecg 页面标签规则
    jeecg查询分页
    算法实践——改良的求解数独的暴力搜索法
    算法实践——舞蹈链(Dancing Links)算法求解数独
  • 原文地址:https://www.cnblogs.com/demian/p/7373530.html
Copyright © 2011-2022 走看看