T781740 兰顿蚂蚁
https://www.luogu.com.cn/problem/T781740?contestId=337980
思路:
- 弄清坐标系
- 把encode(x,y)成64位整数,用于哈希
- 找规律(周期)
- 模拟,分段处理
注意处理方向dir的技巧
图解:

找规律:
bool flag;
for(int k=1;k<=500;++k){//枚举周期
flag=true;
//周期是k的情况下
//pos[i]于pos[i+k]的坐标偏移量是恒定的
starti=11000;
dx=pos[starti+k].first-pos[starti].first;
dy=pos[starti+k].second-pos[starti].second;
for(int i=starti;i<=12500;++i){
if(pos[i+k].first-pos[i].first!=dx||pos[i+k].second-pos[i].second!=dy){
flag=false;
break;
}
}
if(flag){
printf("T=%d\n",k);
exit(0);
}
}
// T=104
代码:
略

浙公网安备 33010602011771号