30分,测试点2第六个数据莫名其妙多加一,用的BFS,求助各位

P1588 [USACO07OPEN] Catch That Cow S

同问
by YTUGGBOY @ 2022-08-12 09:56:25


@[Alpex](/user/664620) 你现在解决那个多加一的问题了吗
by YTUGGBOY @ 2022-08-12 09:57:14


没有
by Alpex @ 2022-08-12 10:22:08


@[Alpex](/user/664620) 首先,请看这组hack ``` 1 9 17 ``` 显然,正确走法是9-18-17(2步)但输出为三。 其原因是代码第29行 `if(temp<0||temp>T)continue;` 其中的`temp>T` 使得程序中temp无法先进后退,所以运算为9-8-16-17(3步) 解决方法可以将29行改为 `if(temp<0||temp>T*2)continue;` 最后,会发现#7出现WA是因为有可能出现一下情况 ``` 1 1145 14 ``` 其中S还未开始BFS扩展队列就结束了,于是加上特殊判断 ``` if(S>T){cout<<S-T;continue;} ``` 理由:因为当FJ比奶牛的坐标大时,只能一步一步挪回去,所以输出S-T。
by donyking @ 2022-08-13 11:11:52


@[YTUGGBOY](/user/747505)
by donyking @ 2022-08-13 11:12:07


@[donyking](/user/577384) 懂了,谢谢神犇
by Alpex @ 2022-08-14 10:10:08


|