社区讨论
我有一个 大 大 的疑惑
P3806【模板】点分治参与者 2已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lobckgx4
- 此快照首次捕获于
- 2023/10/29 18:47 2 年前
- 此快照最后确认于
- 2023/11/04 00:32 2 年前
萌新刚学淀粉质
学的 froggy 题解的双指针写法
我的 AC 代码:
100代码
CPPinline int getroot(int);//返回重心
inline void calc(int);//计算答案
void dfz(int x) {//淀粉质
// x = getroot(x);
calc(x);
del[x] = 1;//标记删除
for (rg int e=head[x], y=to[e]; e; y=to[e=nxt[e]]) {
if (del[y]) continue;
dfz(getroot(y));
}
}
int main() {
//输入...
dfz(getroot(1));
//输出...
return 0;
}
上面的代码是没问题的
但是我又把它改成了这样:
60代码
CPPinline int getroot(int);//返回重心
inline void calc(int);//计算答案
void dfz(int x) {
x = getroot(x);//把根节点更新为重心
calc(x);
del[x] = 1;//标记删除
for (rg int e=head[x], y=to[e]; e; y=to[e=nxt[e]]) {
if (del[y]) continue;
dfz(y);
}
}
int main() {
//输入...
dfz(1);
//输出...
return 0;
}
然后最后三个点就 T 飞了...
(实测 #7 要跑 7 秒)
求问大佬这是为什么....
回复
共 4 条回复,欢迎继续交流。
正在加载回复...