uva11292 Dragon of Loowater(排序后贪心)

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cmath>
#include<map>
#include<set>
#include<vector>
#include<algorithm>
#include<stack>
#include<queue>
#include<cctype>
#include<sstream>
using namespace std;
#define pii pair<int,int>
#define LL long long int
const int eps=1e-8;
const int INF=1000000000;
const int maxn=20000+10;
int n,m,a[maxn],b[maxn],sum;
int main()
{
    //freopen("in1.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    while(scanf("%d%d",&n,&m)==2)
    {
        if(m==0&&n==0)
        {
            break;
        }
        else
        {
            sum=0;
            for(int i=0; i<n; i++)
            {
                scanf("%d",&a[i]);
            }
            for(int i=0; i<m; i++)
            {
                scanf("%d",&b[i]);
            }
            if(n>m)
            {
                printf("Loowater is doomed!
");
            }
            else
            {
                int tn=n,tm=m,j=0,i=0;
                sort(a,a+n);
                sort(b,b+m);
                for(i=0; i<n; i++)
                {
                    if(tn>tm||j>=m)
                    {
                        break;
                    }
                    else
                    {
                        for(; j<m; j++)
                        {
                            if(a[i]<=b[j])
                            {
                                sum+=b[j];
                                tm--;
                                tn--;
                                j++;
                                /*这里的j++非常重要,必须加,因为不加
                                的话下一次循环还是先从上次这个j开始判断一
                                遍再进行下一次循环。(如果for里写成
                                ++j效果和j++一样的),这也是for循环
                                中易犯的错误。*/
                                break;
                            }
                            else
                            {
                                tm--;
                            }
                        }
                    }
                }
                if(i==n)
                {
                    printf("%d
",sum);
                }
                else
                {
                    printf("Loowater is doomed!
");
                }
            }
        }
    }
    //fclose(stdin);
    //fclose(stdout);
    return 0;
}
原文地址:https://www.cnblogs.com/zywscq/p/4227863.html