题解

1 条题解

  • 1
    @ 2022-08-08 11:09:14
    #include<bits/stdc++.h>
    using namespace std;
    int n,flag=0,flag2=0,first=1;
    int a[105],cnt[105],sum[5];
    char ans[105];
    int main()
    {
        scanf("%d",&n);
        for(int i=1; i<=n; i++)
        {
            scanf("%d",&a[i]);
            cnt[a[i]]++;
        }
        for(int i=1; i<105; i++)
            if(cnt[i]==1)
                sum[1]++;
            else if(cnt[i]==2)
                sum[2]++;
            else if(cnt[i]>=3)
                sum[3]++;
        if(sum[1]%2==0)
        {
            for(int i=1; i<=n; i++)
                if(cnt[a[i]]==1)
                {
                    ans[i]='A'+flag;
                    flag^=1;
                }
                else
                    ans[i]='A';
        }
        else
        {
            if(sum[3]==0)
            {
                printf("NO\n");
                exit(0);
            }
            else
            {
                for(int i=1; i<=n; i++)
                    if(cnt[a[i]]==1)
                    {
                        ans[i]='A'+flag;
                        flag^=1;
                    }
                    else
                    {
                        if(cnt[a[i]]==2)
                            ans[i]='A';
                        if(cnt[a[i]]>=3&&first)
                        {
                            ans[i]='A'+flag;
                            flag^=1;
                            first=0;
                            flag2=flag;
                        }
                        else
                            ans[i]='A'+flag2;
                    }
            }
        }
        printf("YES\n");
        for(int i=1; i<=n; i++)
            printf("%c",ans[i]);
        return 0;
    }
    
  • 1

信息

ID
1478
难度
7
分类
贪心 点击显示
标签
递交数
2
已通过
1
通过率
50%
上传者