社区讨论
问几个问题
P1600[NOIP 2016 提高组] 天天爱跑步参与者 5已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @lo11gkrk
- 此快照首次捕获于
- 2023/10/22 13:39 2 年前
- 此快照最后确认于
- 2023/11/02 13:09 2 年前
1.关于本题推的式子:
我在每条路径输入后是这么写的;
CPPmodify(rt[t],-n,n,(dep[s]-dep[lca]-dep[lca]),1);
modify(rt[fa[lca]],-n,n,(dep[s]-dep[lca]-dep[lca]),-1);
然后在线段树合并后这么查询:
CPPif(w[u])ans[u]+=query(rt[u],-n,n,w[u]+dep[u]);
ans[u]+=query(rt[u],-n,n,(w[u]-dep[u]));
而当我把以上两段改成这样就对了:
CPPmodify(rt[t],-n,n,-(dep[s]-dep[lca]-dep[lca]),1);
modify(rt[fa[lca]],-n,n,-(dep[s]-dep[lca]-dep[lca]),-1);
if(w[u])ans[u]+=query(rt[u],-n,n,w[u]+dep[u]);
ans[u]+=query(rt[u],-n,n,-(w[u]-dep[u]));
这是为什么呢?
然后还有
if(w[u])ans[u]+=query(rt[u],-n,n,w[u]+dep[u]);一句中为什么要判
w[u]!=0 呢我好像不是很懂,望大佬讲讲。
回复
共 6 条回复,欢迎继续交流。
正在加载回复...