关于本题数据强度
查看原帖
关于本题数据强度
112381
wlzhouzhuan转转转楼主2022/3/17 08:16

对于 @Froggy 的代码,可以通过造一组菊花的方式叉掉,gen 如下:

int n,m,x;

int main(){
	freopen("data.in","w",stdout);
	printf("%d %d %d\n",n=100000,m=100000,x=10000);
	rep(i,1,n)printf("1 ");puts("");
	rep(i,2,n)printf("1 %d\n",i);
	rep(i,0,x)printf("1 ");puts("");
	rep(i,1,m)printf("1 %d\n",n);
	return 0;
}

对于 @command_block 的代码,他比 Froggy 代码强的地方在于他是基于排序后第 ii 个询问和第 i1i-1 个询问之间的一些关系来跑的,所以只要把菊花换成类菊花即可 hack:

int n,m,x;

int main(){
	freopen("data.in","w",stdout);
	printf("%d %d %d\n",n=100000,m=100000,x=10000);
	rep(i,1,n)printf("1 ");puts("");
	rep(i,2,n){
		if(i<=8)printf("1 %d\n",i);
		else printf("%d %d\n",rng()%8+1,i);
	}
	rep(i,0,x)printf("1 ");puts("");
	int cur1=1,cur2=1;
	rep(i,1,m){
		printf("%d %d\n",cur1,cur2);
		cur2++;
		if(cur2==n/4+1)cur1++,cur2=cur1;
	}
	return 0;
}

对于 @gxy001 的代码,可以用类似的方法 hack:

int n,m,x;

int main(){
	freopen("data.in","w",stdout);
	printf("%d %d %d\n",n=100000,m=100000,x=10000);
	rep(i,1,n)printf("1 ");puts("");
	rep(i,2,n)printf("%d %d\n",((i-1)%3)+1,i);
	rep(i,0,x)printf("1 ");puts("");
	rep(i,1,m)printf("3 3\n");
	return 0;
}
2022/3/17 08:16
加载中...