Codeforces Round #179 (Div. 2) A题解题报告

来源:互联网 发布:小林制药 知乎 编辑:程序博客网 时间:2024/05/16 16:55

这道题目一开始没有看懂题目意思,后来看了别人的解释!题目大意就是:输入一组数据,通过交换,看是否可以做到相邻的数不相同!

这不就是我们高中学过的排列组合吗?找出相同数的数量,再隔空插进去,插空法!则要求相同数的数量不能大于总数的一半!

#include <iostream>
#include <cstdio>
#include <cstring>
int a[110],b[1010];
int main()
{
    int n,i;
    while(scanf("%d",&n)!=EOF)
    {
        memset(b,0,sizeof(b));
        for(i=1; i<=n; i++)
        {
            scanf("%d",&a[i]);
            b[a[i]]++;
        }
        int flag=0;
        for(i=1; i<=1000; i++)
        {
            if(b[i]>(n+1)/2)
            {
                flag=1;
                break;
            }
        }
        if(flag)
            printf("NO\n");
        else
            printf("YES\n");
    }
    return 0;
}

原创粉丝点击