• 【解题报告】 POJ3614 防晒


    【解题报告】 POJ3614 防晒

    题目:防晒(已翻译)

    解题思路:

    模拟+贪心;

    我们这道题是一道好的贪心的例题,我们只要对于每一头奶牛按照它们的minspf进行递减排序,然后在对于每一种防晒霜进行一次扫描,找出符合条件的spf值最大的防晒霜

    但是会想到一点,我们需要将每一头奶牛的minspf和maxspf进行一一对应,所以我们可以使用结构体,然后自己在写一个比较函数,就可以让这两个数值一一对应,这样就方便多了

    AC代码

    #include <iostream>
    #include <algorithm>
    using namespace std;
    const int maxn=2505;
    int c,l,ans;
    struct cow
    {
    	int minspf;
    	int maxspf;
    }a[maxn];
    struct sc
    {
    	int spf;
    	int cover;
    }b[maxn];
    int cmp(sc a,sc b)
    {
        if(a.spf==b.spf)
        return a.cover>b.cover;
        return a.spf>b.spf;
    }
    int cmp2(cow a,cow b)
    {
        if(a.minspf==b.minspf)
        return a.maxspf>b.maxspf;
        return a.minspf>b.minspf;
    }
    int main()
    {
    	cin>>c>>l;
    	for(int i=1;i<=c;i++)
    	cin>>a[i].minspf>>a[i].maxspf;
    	sort(a+1,a+1+c,cmp2);
    	for(int i=1;i<=l;i++)
    	cin>>b[i].spf>>b[i].cover;
    	sort(b+1,b+1+l,cmp);
    	for(int i=1;i<=c;i++)
    	{
    		for(int j=1;j<=l;j++)
    		{
    			if(b[j].spf>=a[i].minspf&&b[j].spf<=a[i].maxspf&&b[j].cover)
    			{
    				ans++;
    				b[j].cover--;
    				break;
    			}
    		}
    	}
    	cout<<ans<<endl;
    	return 0;
    }
    
    本博文为wweiyi原创,若想转载请联系作者,qq:2844938982
  • 相关阅读:
    LCT
    Knights0.
    Beautiful Sequence
    Mole and Abandoned Mine
    防御准备
    最小生成树计数
    Miners
    朝暮(枚举基准 容斥)
    Dynamic Rankings(整体二分)
    BZOJ 3875 Ahoi2014 骑士游戏
  • 原文地址:https://www.cnblogs.com/wweiyi2004/p/11324678.html
Copyright © 2020-2023  润新知