问一个奇怪的问题(重载运算符 WA on #2

P2865 [USACO06NOV] Roadblocks G

为什么更改完重载运算符后,时间减少了?
by Kevinx @ 2023-09-04 22:10:20


你那个 TLE 的应该改成 ```cpp struct data{ ll u, dis; bool operator < (const data &a) const{ return dis > a.dis; } }; ``` 你像上面那样,就相当于 `dis < a.dis`,那堆就会变成大根堆,~~然后你的 dij 就假成指数级,比 SPFA 还差~~
by Disjoint_cat @ 2023-09-04 22:18:15


(补:“你像上面那样”指 TLE 的代码)
by Disjoint_cat @ 2023-09-04 22:18:55


刚才回来看到,谢谢dalao
by Kevinx @ 2023-09-05 12:22:42


@[Kevinx](/user/126972) @[Donotplaygame](/user/549499) 我也是下面那种写法 另外在AT上你用 `data` 做名字写重载会寄(实践出真知)
by 大眼仔Happy @ 2023-09-05 20:57:02


@[大眼仔Happy](/user/537046) 哦 `data` CE 我也有过,应该是 C++17(C++20?)以上,它 STL 里有个 `data` 函数所以就 CE 了。
by Disjoint_cat @ 2023-09-05 21:00:04


|