社区讨论
当你Wa 0pt
P3178[HAOI2015] 树上操作参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhjv05ho
- 此快照首次捕获于
- 2025/11/04 08:57 4 个月前
- 此快照最后确认于
- 2025/11/04 08:57 4 个月前
请检查你的solve是否写成了这样
CPPint solve(int x) {
if (x == 1) return posval[1];
int ans = 0;
// cout << x << '\n';
while (x != 1) {
// cout << "nailong" << id[top[x]] << ' ' << id[x] << '\n';
ans += query(id[top[x]], id[x], 1);
// cout << "nailong" << ans;
x = fa[top[x]];
}
return ans;
}
实际上不需要这这种东西,还容易错。。其实直接用求lca的板子就可以了
CPPint solve(int x, int y) {
int ans = 0;
while (top[x] != top[y]) {
if (dep[top[x]] < dep[top[y]]) swap(x, y);
ans += query(id[top[x]], id[x], 1);
x = fa[top[x]];
}
if (dep[x] > dep[y]) swap(x, y);
return ans += query(id[x], id[y], 1);
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...