警示后人,如果你TLE#2
查看原帖
警示后人,如果你TLE#2
566238
hejianxing楼主2023/9/9 21:41

TLE:

if (mp[h]) return mp[h];
else return mp[h] = dfs(...);

改成这样:

if (mp.find(h) != mp.end()) return mp[h];
else return mp[h] = dfs(...);

最优解第一页。

原理:当 mp[h]=0mp[h]=0 的时候,会塞个 00 进去 map 里面,由于 map 内部是平衡树,就有 00 的位置,查找是能找到的,即 mp.find(h) != mp.end(),但是原来那样写,当有很多个 mp[x]=0mp[x]=0 的时候,mp[h]=0,就要重复跑很多次 dfs。

2023/9/9 21:41
加载中...