loj3076
参照 E_Space 的候选队论文,我们建出广义串并联图进行「删一度点」「缩二度点」「叠合重边」操作合并信息的表达式树。
我们把其描述成一颗 Leafy Tree。
我们不妨在每个叶节点处存一个点或者边,非叶节点处存一个算符 \(op\)。
每个非叶节点将根据其合并方式来决定其究竟表示一个点,还是表示一个边。
对于表示边的节点,我们可以用一个四维向量 \((A,B,C,D)'\) 描述之,表示左右点分别取 \(0/1\) 状态所对应的权值;注意左右不可交换。
对于表示点的节点,我们可以用一个二维向量 \((b,w)'\) 描述之(或者直接拓宽成 \((b,w,-\infty,-\infty)'\) 四维向量),表示其取两种方案是分别最大权。
合并操作不妨分为四种:「删一度点」「缩二度点」「叠合重边」「边序翻转」。
其中「边序翻转」操作用于把 \((u,v)\) 当作 \((v,u)\) 处理的情境。
建树过程可以通过 bfs 当前点类型实现。
对于四种操作,我们分别计算合并方式。
对当前 \(f,p,e=(f,p)\) 进行「删一度点」操作,其将合并为 \(f\)。
\]
对当前 \(p,e_1=(u,p),e_2=(p,v)\) 进行「缩二度点」操作,其将合并为 \(e=(u,v)\)。
\]
对当前 \(e_1=(u,v),e_2=(u,v)\) 进行「叠合重边」操作,其将合并为 \(e=(u,v)\)。
\]
对当前 \(e=(v,u)\) 进行「边序翻转」操作,其将变为 \(e=(u,v)\)。
\]
使用树剖,每次在矩阵中记录轻儿子的信息,进行重链信息合并,向链顶父亲传递信息。
容易构造转移矩阵。
这样子朴素实现单组询问是 \(O(\log^2n)\) 的,使用 GBT 等可以做到 \(O(\log n)\)。
代码实现。
loj3076的更多相关文章
- [loj3076]公园
为了方便,对题意做以下处理: 1.称"西部主题"和"科幻主题"分别为黑色和白色 2.删去题中"保证没有两条不同的道路连接同一对景点"的条件 ...
随机推荐
- SQLMap入门——获取数据库的所有用户
列出数据库中的所有用户 在当前用户有权读取包含所有用户的表的权限时,使用该命令列出所有管理用户 python sqlmap.py -u http://localhost/sqli-labs-maste ...
- DID 2022-12-02
DID第二节课 最低工资对就业率影响(DID) 宾夕法尼亚VS新泽西的快餐店,用边界的好处:在用最低工资法之前,两地工资情况差不多,DID需要两期,92年11月实施,之前之后做电话访问. 数据越全的估 ...
- vue 实现一键复制功能(两种方式)
方法 一 : <div class="mask-cont"> <p><input id="input" /></p&g ...
- JavaScript:输出语法
主要有三种,如下所示:
- BBS升级版
BBS项目 项目的前期准备 1.django2.2 创建一个django目录 (需要配置环境变量和数据库) 'DIRS': [os.path.join(BASE_DIR, 'templates'), ...
- 存储自定义类型元素-LinkedHashSet集合
存储自定义类型元素 HashSet存储自定义类型元素 set集合报错元素唯一: 存储的元素(String,Integer,...,Student,Person...),必须重写hashCode方法和e ...
- 顶层QWidget弹窗设置背景为透明,透明部分为黑色。
setAttribute(Qt::WA_TranslucentBackground); 设置此属性,解决.
- AR Engine毫秒级平面检测,带来更准确的呈现效果
近年来,AR版块成为时下大热,这是一种将现实环境中不存在的虚拟物体融合到真实环境里的技术,用户借助显示设备可以拥有真实的感官体验.AR的应用场景十分广泛,涉及娱乐.社交.广告.购物.教育等领域:AR可 ...
- GaussDB(DWS)现网案例:collation报错
摘要:用户创建hash分布表,使用pbe方式执行使用分布列作为查询条件的语句时报错 本文分享自华为云社区<GaussDB(DWS)现网案例之collation报错>,作者: 你是猴子请来的 ...
- 网络连接(CSP-J 2021 T3)
一道又臭又长的模拟题目..... 主要有几个小技巧可以帮大家省一省代码: 1.scanf("%d.%d",&b,&c); 这里是定了一个格式如果不按格式来就不输入后 ...