Problem - D - Codeforces
题意:
思路:
如果需要构造一个和为定值的序列,那么考虑n-d,n-d+1,.....n+d-1,n+d这种形式
如果要保证不能重复,那么先考虑一个排列,然后在排列上操作
如果根据小数据构造出了一些简单情形,那么请继续使用这种构造方法构造别的情形
Code:
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int mxn=1e5+10;
const int mxe=5e5+10;
int N;
void solve(){
cin>>N;
if(N%2==1){
N++;
for(int i=N/2+1;i<=N-1;i++) cout<<i<<" ";
for(int i=N+2;i<=N/2+N+1;i++) cout<<i<<" \n"[i==N/2+N+1];
}else{
for(int i=N/2;i<=N-1;i++) cout<<i<<" ";
for(int i=N+1;i<=N/2+N;i++) cout<<i<<" \n"[i==N/2+N];
}
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int __=1;cin>>__;
while(__--)solve();return 0;
}