问一下sub4里面t了一个点怎么弄?
查看原帖
问一下sub4里面t了一个点怎么弄?
568775
Joseph_H楼主2023/5/15 19:07

后面想了想,数据范围是不是不太合理。

如果t=100000,每一个都是n=300000,k=1

那么光是输出就必tle

但是大家能过肯定没有这么阴间的数据(大雾

所以请问大家怎么处理这种超时的问题的……

#include<bits/stdc++.h>
using namespace std;
int n,k;
int T;
const int N = 3e5 + 10;
int m[N];
int main(){
	scanf("%d",&T);
	for(int _ = 1;_ <= T;_++){
		memset(m,0,sizeof(m));
		scanf("%d%d",&n,&k);
		if(k * 2 > n){
			printf("NO\n");
			continue;
		}
		printf("YES\n");
		int l = k + 1,j = 0;
		int tas = 1,tag = 3;
		while(l != 0){
			if(tas > n){
				l += 1;
				tas = tag,tag += 2;
			}
			printf("%d ",tas);
			l--;
			m[tas] = 1;
			tas *= 2;
		}
		for(int i = 1;i <= n;i++){
			if(m[i] == 0)
				printf("%d ",i);
		}
		printf("\n");
	}
	
}
2023/5/15 19:07
加载中...