题解 CF1743B

这个题是个简单的构造题

因为不能有连续的“排列”,而排列序列都是必须是以 \(1\) 开头

所以我们只要让 \(2\)\(1\) 不相邻就能保证一个序列里只有它本身和 \(1\) 这两个“排列”

当时在考场上第一感觉写了一个双指针,赛后 dalao 们说可以直接让 \(1\) 在序列第一个, \(2\) 在序列最后一个

//双指针代码
#include<cstdio>
int T;
int main(){
	scanf("%d",&T);
	while(T--){
		int n;
		scanf("%d",&n);
		int i=1,j=n;
		while(i<=j){
			if(i==j){
				printf("%d ",i);
			}else{
				printf("%d %d ",i,j);
			}	
			i++,j--;		
		}
		puts("");
	}
	return 0;
}

//dalao做法
#include<cstdio>
int T;
int main(){
	scanf("%d",&T);
	while(T--){
		int n;
		scanf("%d",&n);
		printf("1 ");
		for(int i=3;i<=n;i++){
			printf("%d ",i);
		}
		printf("2\n");
	}
	return 0;
}
posted @ 2022-11-30 09:10  Tyrue  阅读(18)  评论(0编辑  收藏  举报