10 条题解
-
0
思路
设总共有 种。
首先考虑无解
因为 一定是偶数,所以如果 是个奇数,不管你怎么排,有 个数的数列一定是奇数种。
综上,当 为奇数时,直接 。
有解的情况
思路也很简单。因为我们判断了 为偶数,所以只需要第一次把每种都打出来一个,前面偶数个必定没问题。后面你随意,因为所有种类都输出了,你怎么搞都行。
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
- 上传者