警示后人

P3355 骑士共存问题

reclusive @ 2022-10-14 08:28:52

如果你是二分图最大独立集的做法并且TLE,记住:

  • 不要建边,可以采用vector

  • 不需要用什么奇偶性,只需要改变骑士到达点的顺序,先到右下角,最后是左上角,实测有效,而且很快。

int dx[8]={2,1,2,-1,1,-2,-1,-2};
int dy[8]={1,2,-1,2,-2,1,-2,-1};

by Lofty @ 2022-10-14 14:17:02

@reclusive

记得是我帮你调出来的!!!


by Mo默Sh笙 @ 2022-10-23 20:56:59

@reclusive 为什么改变顺序可以更快?


by reclusive @ 2022-10-24 08:12:00

@Mo默Sh笙 这个跟你选择的马的起点密切相关,对于马的周游问题,因为中心位置的马可以跳八个方向,而边缘位置只有四个甚至两个方向,所以如果优先占满了中间位置,会导致当马跳到边缘之后很难找到解,于是回溯会很长很费时间。你如果尝试不同的马的起点,你会发现,不同的起点使用相同的顺序所用时间完全不同。


|