zoukankan      html  css  js  c++  java
  • 普及C组第三题(8.13)

    2334. 【NOIP普及组T2】战斗 
    (File IO): input:fight.in output:fight.out

    时间限制: 1000 ms  空间限制: 524288 KB

    开始贴图:。。。

    题目:

    输入:

    输出:

    样例:

    范围:

    思路:

    这道题很猥琐,很容易想到贪心,很容易贪错。我们只要排个序,然后从大的往小的模拟牵线。是个人就能想出来。(可惜在下非人也!!!)然后你就成功的只拿了一半的分。。。。。。

    (ノ=Д=)ノ┻━┻      咻~。。。嘭~~

    然而你只要在每次牵线后再排一次就可以了(数据很小,没有关系)我们来给个数据:

    1 6 4 2 2 2 2 2

    牵线后会变成->0 1 1 1 1 2

    按常规方法来做->0 0 0 1 1 2->0 0 0 0 0 2;

    不行,但动动脑子就可以看出这是可以弄完的。我们只要保证大的一定先被排完就可以了,所以再加个sort。

    上代码!!!

    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    using namespace std;
    int t,k=1,n,sum=0,g=2;
    int a[801];
    bool cmp(int x,int y)
    {
        return x>y;
    }
    int main()
    {
        //freopen("fight.in","r",stdin);
        //freopen("fight.out","w",stdout);
        cin>>t;
        while(k<=t)
        {
            cin>>n;
            for(int i=1;i<=n;i++)
            {
                cin>>a[i];
                sum+=a[i];
            }
            sort(a+1,a+1+n,cmp);
            for(int i=1;i<=n;i++)
            {
                for(int j=i+1;j<=n;j++)
                {
                    if(a[j]!=0&&a[i]!=0)
                    {
                        a[i]--;
                        a[j]--;
                        sum-=2;
                    }
                    else if(a[i]==0)
                    break;    
                }
                sort(a+g,a+n+1,cmp);
                g++;
            } 
            if(sum!=0)
            cout<<"NO"<<endl;
            else
            cout<<"YES"<<endl;
            k++;
            sum=0;
            g=2;
        }
    }

    完结撒花!!!

  • 相关阅读:
    [机房测试]11.11
    题解——[AHOI2013]作业(莫队)
    [机房测试]11.7
    [机房测试]11.6
    [机房测试]11.5
    [机房测试]11.4
    [机房测试]10.29
    [机房测试]10.28
    初学SPFA
    神奇的游戏
  • 原文地址:https://www.cnblogs.com/YYCether666/p/11346980.html
Copyright © 2011-2022 走看看