zoukankan      html  css  js  c++  java
  • [USACO07NOV]防晒霜Sunscreen

    POJ

    洛咕

    题意:有N个奶牛去晒太阳 ((1<=N<=2500)),每个奶牛各自能够忍受的阳光强度有一个最小值和一个最大值.所以奶牛就得涂抹防晒霜,防晒霜的作用是让阳光照在身上的阳光强度固定为某个值.给出了(M(1<=M<=2500))种防晒霜.每种防晒霜的固定的阳光强度和数量也给出来了,每个奶牛只能抹一瓶防晒霜,最后问能够享受晒太阳的奶牛有几个.

    分析:贪心策略:给奶牛按照最小忍受值从大到小排序,对于每一头奶牛,选择符合该奶牛的且阳光强度最大且有剩余的防晒霜即可.

    //#include<bits/stdc++.h>
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    using namespace std;
    inline int read(){
        int x=0,o=1;char ch=getchar();
        while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();
        if(ch=='-')o=-1,ch=getchar();
        while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
        return x*o;
    }
    const int N=2505;
    struct ppx{
    	int l,r;
    }a[N];
    struct PPX{
    	int x,y;
    }b[N];
    inline bool cmp(const ppx &x,const ppx &y){return x.l>y.l;}
    inline bool CMP(const PPX &X,const PPX &Y){return X.x>Y.x;}
    int main(){
    	int n=read(),m=read();
    	for(int i=1;i<=n;++i){
    		a[i].l=read();
    		a[i].r=read();
    	}
    	sort(a+1,a+n+1,cmp);
    	for(int i=1;i<=m;++i){
    		b[i].x=read();
    		b[i].y=read();
    	}
    	sort(b+1,b+m+1,CMP);
    	int ans=0;
    	for(int i=1;i<=n;++i)
    		for(int j=1;j<=m;++j)
    			if(b[j].x>=a[i].l&&b[j].x<=a[i].r&&b[j].y>=1){
    				++ans;--b[j].y;break;
    			}
    	printf("%d",ans);
        return 0;
    }
    
    
  • 相关阅读:
    解决docker-compose: command not found
    idea 包存在提示不存在
    使用haproxy负载均衡
    docker使用阿里云仓库上传与下拉images
    docker使用官方仓库上传与下拉images
    WeaveScope-容器监控
    matlab打开
    硬盘测试
    matlab quiver()画箭头的函数
    SDK 和 API 的区别是什么?
  • 原文地址:https://www.cnblogs.com/PPXppx/p/11230891.html
Copyright © 2011-2022 走看看