• [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;
    }
    
    
  • 相关阅读:
    Redis 启动失败
    Java本机直接内存溢出
    Java元数据区域(MetaSpace)OOM
    Java虚拟机本地方法栈溢出例子
    Java堆溢出实例
    C# DllImport CallingConvention选择
    光源选型
    条型光的光路分析
    VS安装包官方下载网址
    win7装.net framework4.6注意事项
  • 原文地址:https://www.cnblogs.com/PPXppx/p/11230891.html
Copyright © 2020-2023  润新知