HACK
查看原帖
HACK
429147
hxhhxh楼主2024/10/12 11:33

Hack @Renshey 的题解。

使用如下代码生成 hack 数据:

#include<bits/stdc++.h>
using namespace std;
struct st{
	int x,y;
}a[11];
int main(){
	a[1]={127,0};
	a[2]={127,67};
	a[3]={99,127};
	a[4]={32,127};
	a[5]={0,68};
	a[6]={0,0};
	a[7]={64,32};
	a[8]={193,0};
	cout<<131072<<" "<<16384<<endl;
	for(int i=1;i<=128;i++) for(int j=1;j<=128;j++) for(int k=1;k<=8;k++) printf("%d %d\n",a[k].x+i,a[k].y+j);
	for(int i=1;i<=16384;i++) printf("%d %d\n",i*8-7,i*8);
	return 0;
}

输出应当是 16384163844356

原理:

如果使用 2k2^k 进行划分,只检查 33 个点是错误的。在这个数据里,需要检查 77 个点才能通过。如果初始随机平移也没有关系,我们可以枚举平移量并且每个平移量都塞一个。

2024/10/12 11:33
加载中...