90分RE记录
AC记录
两份代码的关键区别是:
RE那份:dfs 时只有一颗子树时忘了 dfs 那颗仅有的子树。
void dfs(int u){
if (!ch[u][0]) addn(rt[u], 1, a[u], 1, rg);
else if (!ch[u][1]) rt[u] = rt[ch[u][0]];
else{
dfs(ch[u][0]), dfs(ch[u][1]);
pp = a[u]; np = (mod+1-pp)%mod;
rt[u] = mmerge(rt[ch[u][0]], rt[ch[u][1]], 0, 0, 1, rg);
}
}
AC那份:dfs 了那颗仅有的子树。
void dfs(int u){
if (!ch[u][0]) addn(rt[u], 1, a[u], 1, rg);
else if (!ch[u][1]) dfs(ch[u][0]), rt[u] = rt[ch[u][0]];
else{
dfs(ch[u][0]), dfs(ch[u][1]);
pp = a[u]; np = (mod+1-pp)%mod;
rt[u] = mmerge(rt[ch[u][0]], rt[ch[u][1]], 0, 0, 1, rg);
}
}
犯了这么关键的错误都有90分,笑了。