CodeForces

来源:互联网 发布:音频剪辑软件mac版 编辑:程序博客网 时间:2024/06/05 16:48

题目链接

思路:

 .

很水的造,要使s最小,由于其它值是确定的,只需要使di+i-n的值为0即可,即两个相同的数相距n-i.

由于填数的时候可能会出现对应的位置上已经填数了,所以我就把2*n长度的数划分为两半,左面填奇数的,

右面填偶数的这样就不会重复可.自己填一下就知道了.

#include<bits/stdc++.h>using namespace std;const int maxn=1e5+10;int a[10*maxn];int n;int main(){scanf("%d",&n);memset(a,0,sizeof(a));int lo=1,le=n+1;for(int i=1;i<=n-1;i++){if(i&1==1){a[lo]=a[lo+n-i]=i;while(a[lo]!=0)lo++;}else{a[le]=a[le+n-i]=i;while(a[le]!=0)le++;}}for(int i=1;i<=2*n;i++){if(a[i]==0)printf("%d ",n);elseprintf("%d ",a[i]);}return 0;}

原创粉丝点击