2022.10.27 闲话

SoyTony

倔强

当 我和世界不一样
那就让我不一样
坚持对我来说就是以刚克刚
我 如果对自己妥协
如果对自己说谎
即使别人原谅
我也不能原谅
最美的愿望 一定最疯狂
我就是我自己的神
在我活的地方
我和我最后的倔强
握紧双手绝对不放
下一站是不是天堂
就算失望 不能绝望
我和我骄傲的倔强
我在风中大声地唱
这一次为自己疯狂
就这一次 我和我的倔强
对 爱我的人别紧张
我的固执很善良
我的手越肮脏
眼神越是发光
你 不在乎我的过往
看到了我的翅膀
你说被火烧过才能出现凤凰
逆风的方向
更适合飞翔
我不怕千万人阻挡
只怕自己投降
我和我最后的倔强
握紧双手绝对不放
下一站是不是天堂
就算失望 不能绝望
我和我骄傲的倔强
我在风中大声地唱
这一次为自己疯狂
就这一次 我和我的倔强
我和我最后的倔强
握紧双手绝对不放
下一站是不是天堂
就算失望 不能绝望
我和我骄傲的倔强
我在风中大声地唱
这一次为自己疯狂
就这一次 我和我的倔强
就这一次 让我大声唱
啦啦啦啦啦啦啦啦
啦啦啦啦啦啦啦啦
啦啦啦啦啦啦啦啦
就算失望 不能绝望
啦啦啦啦啦啦啦啦
啦啦啦啦啦啦啦啦
啦啦啦啦啦啦啦啦
就这一次 我和我的倔强

水群被抓两发,一发虎哥一发晓飞,不过水群也是有好处的,比如这篇博最后一题的神奇做法 .

对于 DAG 的一个剖分方法是记以 \(u\) 为起点的路径有 \(f_u\) 条,以 \(u\) 为终点的有 \(g_u\) 条,则令 \((u,v)\) 为重边当且仅当 \(2f_v>f_u\)\(2g_u>g_v\) . 则可以发现一条路径的轻边数量(也就是重链数量)是 \(\Theta(\log p)\) 级别的,其中 \(p\) 是路径条数 .

因为复杂度和路径条数相关,所以一般是 SAM 上维护,不再展开 .

听说 HDU 5118 也可以类似维护 .


HLD Poker

维护一棵 \(n\) 个点 \(m\) 条边的有根树,根是点 \(1\),每个点有点权,\(q\) 次操作,支持:

  • add u x,将 \(u\) 到根的路径上点的权值全部加 \(x\) .
  • balance u x,将 \(u\) 到根的路径上点按顺序提出来组成序列 \(\{s\}\),将与 \(s_{1,3,5,\dots}\) 相连的边全部加 \(x\),与 \(s_{2,4,6,\dots}\) 相连的边全部减 \(x\) .
  • subs u,查询 \(u\) 子树内的点权和 .

\(1\le n,q\le 10^5\) .

定义一个毛毛虫为一条链和与这条链邻接的所有结点构成的集合 .

首先重剖求出重链,进行一次 DFS,若现在处理到结点 \(u\)

  • 若点 \(u\) 还未被标号,则为其标号 .
  • 若点 \(u\) 是重链头,遍历这条重链,将邻接这条链的结点依次标号 .

先递归重儿子,再递归轻儿子 .

然后有:

  • 对于重链,除链头外的结点标号连续 .
  • 对于任意结点,其轻儿子标号连续 .
  • 对于以重链头为根的子树,与这条重链邻接的所有结点标号连续 .

这样毛毛虫和链的操作都可以转换为 DFS 序 \(\Theta(\log n)\) 个区间的操作 .

注意到一棵子树至多剖分为三个不交区间:重链区间、邻接轻点区间、邻接轻子树区间,于是子树可以被剖分为 \(\Theta(1)\) 个区间 .

这样就做完了,注意到 balance 操作对于链 \(u,v\) 的影响会消掉就不难实现了 .

时间复杂度 \(\Theta((n+q)\log^2n)\) .


APJifengc is always here

维护 \(n\) 个带权点,初始没有任何边,\(q\) 次操作,支持:

  • link u v,连一条边 \((u,v)\) .
  • add u x,给 \(u\) 点所在的连通块中所有点点权全体加 \(x\) .
  • qsum u,查询 \(u\) 点所在连通块点权和 .

UPD on 2022.11.15 所有操作后输出每个点的点权 .

\(1\le n,q\le 10^6\) .

蓝桥杯 网络分析 加强 .

离线,考虑对结点重标号使得任意时刻连通块内的点标号连续 .

这样显然并查集 + 链表就可以维护了,这部分是 \(\Theta(n\alpha(n))\) .

然后重标号后用一个并查集记录一下左右端点,同时辅以线段树或树状数组即可,时间复杂度 \(\Theta((n+q)\log n)\) .

upd. +KDT:机场修建,好像需要大力卡常 .

posted @ 2022-10-27 17:55  Jijidawang  阅读(94)  评论(3编辑  收藏  举报
😅​