10 条题解

  • 0
    @ 2024-6-29 18:07:08

    思路

    设总共有 kdskds 种。

    首先考虑无解

    因为 nn 一定是偶数,所以如果 kdskds 是个奇数,不管你怎么排,有 nn 个数的数列一定是奇数种。

    综上,当 kdskds 为奇数时,直接 1-1

    有解的情况

    思路也很简单。因为我们判断了 kdskds 为偶数,所以只需要第一次把每种都打出来一个,前面偶数个必定没问题。后面你随意,因为所有种类都输出了,你怎么搞都行。

    Code

    #include<bits/stdc++.h>
    using namespace std;
    int n,a,b[100005],kds,mx=-1;
    int main()
    {
        cin>>n;
        for(int i=0;i<n;++i)
        {
            cin>>a;
            mx=max(mx,a);
            if(b[a]==0)
            {
                kds++;
            }
            ++b[a];
        }
        if(kds%2==1)
        {
            cout<<-1;
            return 0;
        }
        kds=0;
        int i=1,nn=n;
        while(n>0)
        {
            if(b[i]!=0)
            {
                cout<<i<<" ";
                b[i]--;
                n--;
            }
            ++i;
            if(i>mx)
            {
                i=1;
            }
        }
        return 0;
    }
    

    信息

    ID
    2
    时间
    1000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    442
    已通过
    192
    上传者