警示后人+数据过水
查看原帖
警示后人+数据过水
444040
Echoternity楼主2023/7/24 09:35

注意 hh 大得离谱的范围,刚好卡着 long long 的上界,所以最好的处理方式,其一就是全程 unsigned long long 或者 __int128_t,还有一种方法就是设 −1-1 为 ∞\infty,但我尝试了没成功(实现太丑陋),还有一个更巧妙的就是根据同余最短路的本质将 hh 自减 11 后把 inf⁡\inf 设为 263−12^{63}-1,也就是 long long 的上界。


至于数据过水,指的是我把

if(!Vis[v]) Q.push(v),Vis[v]=1;

写成

if(!Vis[v]) Q.push(v),Vis[u]=1;

有 80pts80pts。

写成

if(!Vis[v]) Q.push(v),Q.push(v);

有 50pts50pts。

而题解区中大多数人直接 std::memset(f,0x3f,sizeof(f)) 应该都是过不了的,可能现在还没 hack\text{hack}(?

2023/7/24 09:35
加载中...