cf1733B
以第一次1与2之间的比赛入手,必定有一胜一负,也就是min{x,y}=0,max{x,y}>0
而比赛次数必定为maxn的倍数(因为有k个人赢了maxn次),所以(n-1)%maxn=0,不满足上述条件的x,y均没有解
而合法的胜者序列不能从1开始输出,因为1中间到第二局隔了一个2,所以从2开始枚举胜者
code
1 #include <algorithm> 2 #include <iostream> 3 #include <cstring> 4 #include <cstdio> 5 using namespace std; 6 int t,n,x,y,minn,maxn; 7 void sol() 8 { 9 cin>>n>>x>>y; 10 minn=min(x,y); maxn=max(x,y); 11 if (minn!=0||maxn==0||(n-1)%maxn!=0) { 12 cout<<-1<<endl; return ; 13 } 14 for (int i=2;i<=n;i+=maxn) { 15 for (int j=1;j<=maxn;++j) 16 cout<<i<<" "; 17 } 18 cout<<endl; 19 } 20 int main() 21 { 22 cin>>t; 23 while (t--) sol(); 24 return 0; 25 }