LCA / Nowcoder 5086 C 發表於 2020-04-07 更新於 2024-10-23 分類於 NowCoder Disqus: 文章字數: 118 所需閱讀時間 ≈ 1 分鐘 水题调一万年,第一次就差三个地方 忘记了for work() assert()里面忘记双等号,写了个单个等号… LCA 写错了 12345678910111213141516int r(int i,int j){ if(d[i] > d[j])swap(i,j); per(off,0,20){ if(d[j]-d[i] >= (1<<off) ){ j=f[j][off]; } } if(i == j)return i; per(off,0,20){ // <---------------------------- 写成 per(off,1,20) 了 if(f[i][off] != f[j][off]){ i=f[i][off]; j=f[j][off]; } } return f[i][0];} 不过感觉LCA写得比原来熟很多了