n个数字全排成一个圈,满足任意相邻n个之和之间最大最小值之差不超过1
n为偶数时
不存在
n为奇数,构造
#include<bits/stdc++.h> using namespace std; typedef long long ll; #define sc(x) scanf("%I64d",&x); #define read(A) for(int i=0;i<n;i++) scanf("%I64d",&A[i]); ll A[200005]; ll N; ll B[200005]; bool check() { ll a,b,c,t; c=A[2*N]+A[1]+A[2]; t=A[2*N-1]+A[2*N]+A[1]; a=min(c,t); b=max(c,t); for(int i=1; i<=2*N-2; i++) { t=A[i]+A[i+1]+A[i+2]; a=min(a,t); b=max(b,t); } // cout<<a<<b<<endl; return (b-a<=1); } int main() { sc(N); ll k=1; if(N%2==0){ puts("NO"); return 0; } for(int i=1; i<=N; i++) { if(i&1){ A[i]=k; k++; A[i+N]=k; k++; }else { A[i+N]=k; k++; A[i]=k; k++; } } // if(check()) { puts("YES"); for(int i=1; i<=2*N; i++) { cout<<A[i]<<' '; } } // cout<<ans<<' '; }