Codeforces Round #640 (Div. 4) G. Special Permutation

题目链接

题目大意

就是一个n,要你写出一个全排列满足所有相邻元素差值的绝对值大于等于2小于等于4.

题目思路

构造题,但是我没什么具体的思路,其实很简单。

如果n <4,则没有答案。 您可以做一些手工确定。 否则,答案存在,并且有一种简单的构造方法:首先,让我们将所有奇数整数以递减顺序放入答案中,然后将4、2和所有其他偶数以递增顺序放置。 要测试它始终有效,您可以在本地运行某种检查器(可以在不到一秒钟的时间内非常快速地检查所有1000个测试,这有时可能很有用)。

代码

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
int t,n;
signed main(){
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        if(n<4){
            printf("-1");
        }else{
            for(int i=n;i>=1;i--){
                if(i%2==1){
                    printf("%d ",i);
                }
            }
            printf("4 2 ");//
            for(int i=6;i<=n;i=i+2){
                printf("%d ",i);
            }
        }
        printf("\n");
    }
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章