摘要: 一、题目 点此看题 二、解法 可以用拆贡献的方法把最后的最后的答案分解开来,考虑点 \(u\) 的切换次数,如果相邻两个切换点来自同一个子树,那么点 \(u\) 不会产生任何贡献(有贡献也一定在子树内就算过了),如果相邻切换点来自不同子树那么会有 \(1\) 的贡献。注意这个相邻的意思并不是实际相邻 阅读全文
posted @ 2021-03-17 17:46 C202044zxy 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 一、题目 点此看题 三操作是到根的路径哦,不要以为是到子树根的路径。 二、解法 一定要仔细观察题目中的修改有没有什么特殊性质:点 \(x\) 到根节点的路径上所有的点染上一种没有用过的新颜色 我感到了一种神秘的熟悉感,这个东西不是 \(\tt lct\) 的那个 \(\tt access\) 操作吗 阅读全文
posted @ 2021-03-17 15:05 C202044zxy 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 一、题目 点此看题 二、解法 一个比较显然的做法的树剖维护树套树,时间复杂度 \(O(n\log^3n)\) 现在讲一下 \(O(n\log^2 n)\) 的做法,首先考虑不带修改怎么做,每个点维护到根的权值线段树,然后直接拿 \(u,v,lca,fa[lca]\) 这四个根在线段树上二分即可,用主 阅读全文
posted @ 2021-03-17 11:02 C202044zxy 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 一、题目 点此看题 二、解法 首先要知道暴力为什么慢才能去优化,首先如果 \(a\) 只有正数的话那么修改的时间是均摊 \(O(n)\) 的,但是会有几部耗时很久,如果回撤的话就会非常耗时。这道题 \(a\) 是负数相当于回撤的效果,所以最坏情况是 \(O(n^2)\) 级别的。 由于只有加法是很快 阅读全文
posted @ 2021-03-17 09:40 C202044zxy 阅读(64) 评论(0) 推荐(0) 编辑