ZROI 暑期高端峰会 A班 Day4 树上数据结构
FBI Warning:本文含有大量人类的本质之一。
你经历过绝望吗?
[ZJOI2007]捉迷藏
询问树上最远黑点对。
动态边分治可以比点分治少一个 \(\log\)。
bzoj3730
咕了。
[ZJOI2015]幻想乡战略游戏
动态维护一棵树的带权重心。每个点度数 \(\le 20\)。
暴力:从根往最重的跳,能跳就跳。
动态点分治加速即可。
边分治?链分治?
边分治和点分治很像,找一条边使得剩下部分尽量平衡。
不过直接这样会被菊花图卡掉。
然后就要……用某些方法变成二叉树。
咕了。这么重要的东西,肯定回来补的。
[Ynoi2012]D1T3
开 幕 雷 击
每次查询时,考虑在点分树上找到深度最浅的点,满足这个点被保留区间点 \(x\) 所在连通块包含。暴力跳即可。
那么把根固定下来统计。具体就是问子树中对于点满足它到根的路径上有 \(\min\ge l,\max\le r\),不同的颜色数有多少。
询问离线按根分类,对每个根按 \(l\) 排序,CDQ 分治即可。
floj 307 不可知圆环/CF1010F
一棵树,可以随意删边,问使得 \(1\) 所在连通块大小为 \(k\) 的方案数。
明显可以 DP。\(f_{x,i}\) 表示 \(x\) 的子树,删到 \(x\) 所在连通块恰好为 \(i\) 方案数。
写成生成函数的形式:\(F_u(x)=x\prod(F_v(x)+1)\)。
树链剖分。对于每条重链:
\(F_u(x)\) 表示考虑重儿子的生成函数,\(A_u(x)\) 表示不考虑重儿子的生成函数再乘上 \(x\)。
对于重链底端,\(F_u(x)=A_u(x)\)。否则 \(F_u(x)=A_u(x)(F_v(x)+1)\)。
对于一条重链分治求。对于两条重链之间暴力。复杂度应该是三个 \(\log\)。
[Ynoi2012]D2T3
对于度数小于等于根号的点,暴力。
对于度数大于根号的点,点数不会太多。
这种做法是根号的。
套路:对每个点,只维护轻儿子。修改时只有轻边的父亲需要动态维护。
由于轻边只有 \(\log\) 条,复杂度就是两个 \(\log\)。
又是链分治
咕了。
百度必应边分治和链分治去了……
UOJ191
发现明显是个上凸包。
然后把操作看成是操作树,末尾加一个元素看作走向一个儿子,末尾删除一个儿子看作回溯。
就是问一条路径的上凸包中,某个点处的值。
然后就是询问一条链上的上凸包。可以启发式合并。(不知道能不能李超线段树……)
复杂度应该是两个 \(\log\)。
???
\(n\) 个点的树,\(q\) 次操作,修改单点点权或者询问最大权值连通块。
动态 DP。就是子树内包含/不包含根的。没了。
???
一棵树,每个点可以用 \(a_u\) 代价选中子树中所有叶子。每次单点修改 \(a\),询问选中所有叶子的最小代价。
DP。\(f_u\) 表示……
动态 DP 套路,重链剖分。没了。
LCT
太棒了终于有会的了
动态DP
太棒了终于又有会的了
注意的是也可以用 LCT 维护。神奇的是,这里 LCT 跑得更快。
???
\(n\) 个人(\(0\) 到 \(n-1\)),第 \(i\) 个人手上有个 \(a_i\)
最开始有个数 \(x=0\)。从 \(0\) 到 \(n-1\),每个人可以选择是否变成 \((x+a_i)\bmod n\)
游戏结束后第 \(x\) 个人获胜
每个人采取如下策略:只有当变了 \(x\) 能必胜,且不变不必胜的情况下,他才会变动 \(x\)。
\(q\) 次操作,每次修改 \(a_i\),询问谁获胜。
\(n,q\le 10^5\)
首先肯定只会最多一个人动手。因为如果两个人动手,前面那个人就没有必胜了,矛盾。
而且动了手后 \(x\) 一定会变成 \(i\)。
\(i\) 朝 \((i-a_i)\bmod n\) 连边。当 \((i-a_i)\bmod n\ge i\) 时毫无意义,因为 \(x\) 一定是移动后能必胜才变的,所以对于前 \(i\) 个人不可能变出 \(\ge i\) 的数。
这形成了一个森林(大点往小点连边)。
只考虑有 \(0\) 的那棵树。
\(f_x\) 表示如果从 \(0\) 一路变到 \(fa_x\),\(x\) 是否会选择把它变成 \(x\)。
然后就是个开枪游戏(?),LCT 维护动态 DP 即可。
Codechef Pushflow
\(n\) 个点的图,每个点最多属于一个简单环(点仙人掌?),边有边权。
\(m\) 次操作,询问两点之间最大流,或者修改一个边权。
\(n,m\le 10^5\)
最大流就是最小割。
最小割要么是切环上两条边,要么是切一条树边。
对于环边,肯定有一条是最小边,那么把它删掉,并把它的边权加到这个环上其它边的边权上。
那么此时剩下的肯定是一棵树,就是求链上最小值了。
修改边权,如果是树边,直接搞;如果是环边,就需要更新最小值和树形态了。
用 LCT 可以做到 \(O(m\log n)\)。(大常数……)
WineDAG's Prevention
\(n\) 个点的树 \(q\) 次操作,单点修改点权,翻转路径上点权,询问路径和、最大值、最小值。
\(n,q\le 10^5\)
考虑 LCT。对每一块用一棵 Splay 维护形态,另一棵权值 Splay 维护权值,次序一一对应。
复杂度 \(O(q\log n)\)。
CF1137F
给一棵树,每个点有一个优先级,初始为自己的标号。……
先把最大标号作为根。
考虑 \(x\) 和 \(y\) 哪个先被删。
如果 \(x\) 是 \(y\) 的祖先,明显 \(y\) 先被删。
否则就比较子树最大值,小的那个先被删。
由于每次会把一个点改成最大值+1,考虑 LCT 维护 access 连续段,等价于换根,并且整体修改到原来跟上一段路径的子树最大值。
然后就是查询全局排名。
???
三部分点 A,B,C,各有 \(n_1,n_2,n_3\) 个点。
其中 AB 构成一棵树,AC 构成一棵树,A 之间的点没有连边。
随机 \(i,j\) 把 \(B_1\) 到 \(B_i\),\(C_1\) 到 \(C_j\) 删了,问 \(A\) 仍然联通的概率。
\(n_i\le 10^5\)
发现 \(i\) 递增的时候,使得 \(A\) 联通的 \(j\) 递减。
动态维护连通性即可。(然而这玩意我还没打过……)
ZROI 暑期高端峰会 A班 Day4 树上数据结构的更多相关文章
- ZROI 暑期高端峰会 A班 Day4 生成函数
一般生成函数 很普及组,不讲了 生成函数是一种形式幂级数,也就是我们只关心系数,不关心未知数具体的值. 比如 \(\sum\limits_{i\ge 0}x^i=\frac{1}{1-x}\).虽然只 ...
- ZROI 暑期高端峰会 A班 Day1 序列数据结构
FBI Warning:本文包含大量人类的本质之一 CF643G 维护一个序列,可以区间赋值,求区间中出现超过 \(p\%\) 的数. 允许输出不对的数,允许重复输出,但是所有对的数都一定要输出.而且 ...
- ZROI 暑期高端峰会 A班 Day2 线性代数
高斯消元 很普及组,不讲了 当主元没有逆的时候可以辗转相除. 如果也没有带余数除法--没救了 逆矩阵 我们定义矩阵 \(A\) 的逆矩阵为 \(A^{-1}\),满足 \(AA^{-1}=A^{-1} ...
- ZROI 暑期高端峰会 A班 Day3 图论
最短路 NOI2019 D2T1 弹跳 KD 树 线段树套set -> 线段树套并查集? POI2014/2015 ??? \(n\) 个点 \(m\) 条边 DAG.求删掉每个点后 \(1\) ...
- ZROI 暑期高端峰会 A班 Day1 组合计数
AGC036F Square Constriants 一定有 \(l_i<p_i\le r_i\). 考虑朴素容斥,枚举每个数是 \(\le l_i\) 还是 \(\le r_i\).对于 \( ...
- ZROI 暑期高端峰会 A班 Day3 字符串
FBI Warning:本文含有大量人类的本质之一 后缀树 反正后缀树就是反串的后缀自动机的 Parent 树,就不管了. 然而 SAM 也忘了 好的假装自己会吧--dls 后缀自动机 大概记得,不管 ...
- ZROI 暑期高端峰会 A班 Day5 杂题选讲
CF469E \(n\) 个需要表示的数,请使用最少的 \(2^k\) 或 \(-2^k\) 表示出所有需要表示的数.输出方案. \(n\le 10^5,|a_i|\le 10^5\). 首先每个数肯 ...
- ZROI 暑期高端峰会 A班 Day5 计算几何
内积(点积) 很普及组,不讲了. \[(a,b)^2\le(a,a)(b,b)\] 外积(叉积) 也很普及组,不讲了. 旋转 对于矩阵 \(\begin{bmatrix}\cos\theta\\\si ...
- ZROI 暑期高端峰会 A班 Day6 离线问题
FBI Warning:本文含有大量人类本质之一. 动态联通问题 允许离线. 模板,不讲了. 归并排序 %@)(#&%)++%($@)%!#(&%)(&@))) 主定理 U^( ...
随机推荐
- 如何解决aws解绑银行卡问题?
首先先来说明一下我自己的情况? 一年的免费使用 前提:没有开启任何的实例服务 先贴一条官方的解释 关于我小白一个.学校课程要求使用aws,注册之后在网络上看到一堆人踩坑,aws的扣费就是个坑! 预授权 ...
- 【Luogu5349】幂(分治FFT)
[Luogu5349]幂(分治FFT) 题面 洛谷 题解 把多项式每一项拆出来考虑,于是等价于要求的只有\(\sum_{i=0}^\infty i^kr^i\). 令\(f(r)=\sum_{i=0} ...
- win10家庭版添加本地策略
在桌面新建一个空文件夹(此处是需要新建文件夹而并非文件),文件夹的名称大家随意即可.如下图所示: 打开刚刚新建的文件夹(双击文件夹则打开文件夹).如下图所示: 在刚刚我们打开的文件夹资源地 ...
- virtualbox通过Nat模式上网,宿主机与宿主机互通
本地搭建virtualbox,开始用的nat转发模式,这样的话宿主机没法访问虚拟机里面的服务.比如nginx网站.这样很不方便 . 在网上找了好久,终于找到了方案.那就是再添加一块虚拟网卡. 在虚拟机 ...
- Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx)
Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx) 一丶集群和Nginx反向代理 ...
- SpringMVC数组参数
前端 var moduleids = moduleArr.join(','); //一定要切换成,分割的字符串传到后台 后台 @RequestParam List<String> modu ...
- tomcat采坑
1. tomcat采坑 1.1. 采坑 今天又踩了个以前踩过的坑,运维系统迁移到docker,使用的tomcat版本是tomcat8,而原来的版本是tomcat7.0.53,导致的结果就是系统间请求一 ...
- APICloud项目纪要
一.页面之间的传递参数通过pageParam传递参数: api.openWin({ name: 'ware', url: './ware.html', pageParam: { wareId: 'w1 ...
- kubernetes集群内通过endpoint访问外部服务
kubernetes内的服务访问集群外独立的服务最好通过endpoint方式,例如MySQL 1.创建mysql-service.yaml apiVersion: v1 kind: Service m ...
- MySQL修炼之路二
1. 表字段的操作 1. 语法: alter table 表名 执行动作: 2. 添加字段(add) alter table 表名 add 字段名 数据类型: alter table 表名 add 字 ...