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;
}
输出应当是 16384 个 4356。
原理:

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