社区讨论

我有一个 大 大 的疑惑

P3806【模板】点分治参与者 2已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lobckgx4
此快照首次捕获于
2023/10/29 18:47
2 年前
此快照最后确认于
2023/11/04 00:32
2 年前
查看原帖
萌新刚学淀粉质
学的 froggy 题解的双指针写法
我的 AC 代码: 100代码
CPP
inline 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代码
CPP
inline 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 条回复,欢迎继续交流。

正在加载回复...