套路题。

对于这一类与 \(\max\) 有关的题,优先考虑笛卡尔树。

建出笛卡尔树,考虑处理以某个点 \(u\) 举办会议时,参加会议的成本。

这里考虑询问区间为 \([1,n]\)。

明显 \(u\) 的贡献是 \(\sum_{i=1}^n\max([i,u])\)。(\([x,y]\) 代表序列上 \(x\) 到 \(y\) 的所有数组成的集合)

考虑枚举这个 \(\max\),在笛卡尔树上的 \(\max\) 对应 LCA。

假设节点 \(u\) 到根节点所经过的节点为 \(v_1\sim v_k\)(\(v_1=u,v_k=rt\)),那么贡献可以转化为:

\[\sum_{i=1}^ka[v_i]\times (siz[v_i]-siz[v_{i-1}])
\]

在这里我们假设 \(siz[v_0]=0\)。

拆一下:

\[\sum_{i=1}^k a[v_i]\times siz[v_i]-\sum_{i=1}^{k-1}a[v_{i+1}]\times siz[v_i]
\]
\[a[rt]\times n+\sum_{i=1}^{k-1}(a[v_i]-a[v_{i+1}])\times siz[v_i]
\]

很明显 \(v_{i+1}\) 是 \(v_i\) 的父亲。转化为每个点固定点权,寻找一个节点使得其到根节点的权值最小。

注意到每个节点的权值一定是负的。

于是,我们有了一个 \(O(nm)\) 的算法。

考虑使用区间笛卡尔树的套路。只有左链和右链的权值会发生变化。

改写一下:(这里以右链为例)

\[a[rt]\times(R-L+1)+\sum_{i=1}^k(a[v_i]-a[v_{i+1}])\times(R-l[v_i]+1)+V[v_1]
\]
\[a[rt]\times(R-L+1)+\sum_{i=1}^k(a[v_i]-a[v_{i+1}])\times(1-l[v_i])+a[v_1]\times R+V[v_1]
\]

\(V[v_1]\) 表示该节点到其左子树中的某个节点,权值最小的权值。

注意需要减去当前“根节点”到真正的根节点的贡献。

上述计算的是单个节点的贡献,等价于一次函数。

考虑将单调栈可持久化,问题就变成了了静态树上一次函数最值。

(在这里感谢Claris在U群中回答我的提问)

直接对其使用全局平衡二叉树即可。对每个节点建立凸包,直接归并左右儿子即可。

每个节点被归并 \(O(\log n)\) 次,复杂度是对的。

在凸包上二分转化为对询问排序,然后移动凸包上的答案指针。

总复杂度 \(O(n+m)\log n)\),可以通过。

代码在写了在写了

LGP5044口胡的更多相关文章

  1. Topcoder口胡记 SRM 562 Div 1 ~ SRM 599 Div 1

    据说做TC题有助于提高知识水平? :) 传送门:https://284914869.github.io/AEoj/index.html 转载请注明链接:http://www.cnblogs.com/B ...

  2. 口胡FFT现场(没准就听懂了)&&FFT学习笔记

    前言(不想听的可以跳到下面) OK.蒟蒻又来口胡了. 自从ZJOI2019上Day的数论课上的多项式听到懵逼了,所以我就下定决心要学好多项式.感觉自己以前学的多项式都是假的. 但是一直在咕咕,现在是中 ...

  3. BZOJ 口胡记录

    最近实在是懒的不想打代码...好像口胡也算一种训练,那就口胡把. BZOJ 2243 染色(树链剖分) 首先树链剖分,然后记录下每个区间的左右端点颜色和当前区间的颜色段.再对每个节点维护一个tag标记 ...

  4. Atcoder/Topcoder 口胡记录

    Atcoder/Topcoder 理论 AC Atcoder的❌游戏示范 兴致勃勃地打开一场 AGC 看 A 题,先 WA 一发,然后花了一年时间 Fix. 看 B 题,啥玩意?这能求? 睡觉觉. e ...

  5. NOIP2016考前做题(口胡)记录

    NOIP以前可能会持续更新 写在前面 NOIP好像马上就要到了,感觉在校内训练里面经常被虐有一种要滚粗的感觉(雾.不管是普及组还是提高组,我都参加了好几年了,结果一个省一都没有,今年如果还没有的话感觉 ...

  6. 关于有向图走“无限次”后求概率/期望的口胡/【题解】HNCPC2019H 有向图

    关于有向图走"无限次"后求概率/期望的口胡/[题解]HNCPC2019H 有向图 全是口胡 假了不管 讨论的都是图\(G=(V,E),|V|=n,|E|=m\)上的情况 " ...

  7. 「口胡题解」「CF965D」Single-use Stones

    目录 题目 口胡题解 题目 有许多的青蛙要过河,可惜的是,青蛙根本跳不过河,他们最远只能跳 \(L\) 单位长度,而河宽 \(W\) 单位长度. 在河面上有一些石头,距离 \(i\) 远的地方有 \( ...

  8. PKUSC 2022 口胡题解

    \(PKUSC\ 2022\)口胡题解 为了更好的在考试中拿分,我准备学习基础日麻知识(为什么每年都考麻将 啊啊啊) 首先\(STO\)吉老师\(ORZ,\)真的学到了好多 观察标签发现,这套题覆盖知 ...

  9. 「线性基」学习笔记and乱口胡总结

    还以为是什么非常高大上的东西花了1h不到就学好了 线性基 线性基可以在\(O(nlogx)\)的时间内计算出\(n\)个数的最大异或和(不需要相邻). 上述中\(x\)表示的最大的数. 如何实现 定义 ...

随机推荐

  1. java在访问https资源时,忽略证书信任问题 (转)

    java程序在访问https资源时,出现报错sun.security.validator.ValidatorException: PKIX path building failed: sun.secu ...

  2. Fastjson的JSONObject.toJSON()解析复杂对象发生内存泄漏问题

    这可能是fastjson的一个bug,我使用最新版依然存在该问题. 在用做报表功能的时候,发现一旦单元格过多,大概有80-100个单元格,就会发生程序假死,CPU持续占用超过90%,内存持续占用超90 ...

  3. 需求: 使用LinkedList存储一副扑克牌,然后实现洗牌功能。

    import java.util.LinkedList; import java.util.Random; /* 需求: 使用LinkedList存储一副扑克牌,然后实现洗牌功能. */ //扑克类 ...

  4. Linux防火墙(iptables/firewalld)

    Linux防火墙(iptables/firewalld) 目录 Linux防火墙(iptables/firewalld) 一.iptables 1. iptables概述 2. netfilter和i ...

  5. 如何在 pyqt 中实现全局事件总线

    前言 在 Qt 中可以使用信号和槽机制很方便地实现部件之间的通信,考虑下面这样的场景: 我想要点击任意一个专辑卡并通知主界面跳转到专辑界面,那么一种实现方式如上图所示:点击任意一个蓝色方框所示的专辑卡 ...

  6. 浅谈.net core如何使用EFCore为一个上下文注类型注入多个实例用于连接主从数据库

    在很多一主多从数据库的场景下,很多开发同学为了复用DbContext往往采用创建一个包含所有DbSet<Model>父类通过继承派生出Write和ReadOnly类型来实现,其实可以通过命 ...

  7. 【第二十四期】golang 一年经验开发 富途

    他们家是按题目来的,从一个小题目慢慢延伸着问,由浅入深,问到你换题为止. 第一题 给了一个网址,解释一下浏览器填入这个网址后发生了什么? TCP为什么要三次握手四次挥手? 502是什么? 如果出现50 ...

  8. vue实例中的watch属性

    watch 就是监听,当数据发生改变的时候就执行 data:{ num1:1, num2:2 }, watch:{ num1(newValue){ }, num2(newValue,oldValue) ...

  9. python控制浏览器上传文件

    自动化爬虫方法和库很多,难点大多数在登录.可以大致分为:普通验证码,扫码登录,QQ一键登录,拖动验证,无痕验证,人工识别(比如12306登录) 万能大法可以破解一切以上需求,自动控制浏览器行为 参考文 ...

  10. Python中读写文件三部曲

    写入文件:要把第二个参数 'r' 改成 'w' ,表示write,即以写入的模式打开文件;  往文件中写入内容,使用write()函数. 例子如下:注意 'w' 写入模式会暴力清空掉原有文件,然后再写 ...