题解:P12352 「HCOI-R2」Rabbit Panic (Easy Ver.)
fish_love_cat · · 题解
Upd:改了一些胡言乱语的部分,比如倒闭了。
整场最简单的。
注意到最后剩下的一定是整个数列的平均值。
由于是一个排列,所以要得到这个值最简单的一个方法是让第
于是我们把第
但是当
还有就是反复选中显然不会有什么影响,本题不需要最小化步数,所以怎么构造都是对的。
还有一种无解的情况是
代码易于实现。
#include<bits/stdc++.h>
using namespace std;
void solve(){
int n,m;
cin>>n>>m;
if(n==1){
puts("0");
return;
}
if(m==1){
puts("-1");
return;
}
if(!(n&1)&&(m&1)){
puts("-1");
return;
}
int flc=(n-m)/2+1;
cout<<flc<<'\n';
for(int i=1;i<=flc;i++){
if(m&1)cout<<n/2+1<<' ';
for(int j=2;j<=m;j+=2)
cout<<j/2+i-1<<' '<<n+1-(j/2+i-1)<<' ';
puts("");
}
}
signed main(){
int t;
cin>>t;
while(t--)
solve();
return 0;
}