• 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;
    }
  • 相关阅读:
    快速排序
    归并排序
    堆排序
    通过先序和中序创建二叉树
    插入排序
    二叉排序树
    九宫重排
    字符串匹配 sunday算法
    傻逼数学题(math)
    最近点对学习笔记
  • 原文地址:https://www.cnblogs.com/zywscq/p/4227863.html
Copyright © 2020-2023  润新知