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;
}

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