CodeForces - 1051C -Vasya and Multisets

版权声明:《本文为博主原创文章,转载请注明出处。 》 https://blog.csdn.net/zbq_tt5/article/details/88954751

题目链接:CodeForces - 1051C

题目类型:

模拟题

题意:

给一组数据,只出现一次的称为好糖,现在要给男生女生分糖,要求男生女生得到的好糖数相同,如果能够分的话输出YES+分糖的顺序,如果不能的话输出NO

关键点是坏糖可以拆分成好糖,比如1 1,可以把1给女生,把另一个1给男生,这样男生女生都得到了一个好糖

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<string>
using namespace std;
string num_puts="";
int a[1100],num[1100],better,bad,max_number,num_number;
int main()
{
    int n;
    cin>>n;
    for(int i=1; i<=n; ++i)
        cin>>a[i],num[a[i]]++;
    for(int i=1; i<=n; ++i)
    {
        if(num[a[i]]==1)
            ++better;
        else
        {
            ++bad;
            if(num[a[i]]>max_number)
            {
                max_number=num[a[i]];
                num_number=a[i];
            }
        }
    }
    if(better%2==0)
    {
        printf("YES\n");
        int indexx=1;
        for(int i=1; i<=n; ++i)
        {
            if(num[a[i]]==1&&indexx==1)
            {
                indexx=(indexx+1)%2;
                num_puts+='A';
            }
            else if(num[a[i]]==1&&indexx==0)
            {
                indexx=(indexx+1)%2;
                num_puts+='B';
            }
            else if(num[a[i]]>1)
            {
                num_puts+='A';
            }
        }
    }
    else//代表糖为奇数
    {
        int indexx=1;
        int flag=0;
        if(max_number>2)
        {
            printf("YES\n");
            for(int i=1; i<=n; ++i)
            {
                if(num[a[i]]==1&&indexx==1)
                {
                    indexx=(indexx+1)%2;
                    num_puts+='A';
                }
                else if(num[a[i]]==1&&indexx==0)
                {
                    indexx=(indexx+1)%2;
                    num_puts+='B';
                }
                else if(num_number==a[i]&&flag==0)
                {
                    num_puts+='B';
                    flag=1;
                }
                else
                    num_puts+='A';
            }
        }
        else
        {
            printf("NO\n");
        }
    }
    cout<<num_puts<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/zbq_tt5/article/details/88954751