2025 刷题计划 - 线段树

news/2025/1/20 20:38:56/文章来源:https://www.cnblogs.com/laoshan-plus/p/18682494

2025 刷题计划 - 线段树

A. P3313 [SDOI2014] 旅行

树剖板子题,开 \(C\) 棵线段树即可。你可能会说开不下?动态开点不就完了。

B. P3924 康娜的线段树

有意思的一道题,貌似 \(O(n\log n)\) 解法比 \(O(n)\) 更难?我实现不出来。

首先易得期望的计算方式即为:设当前节点 \(x\) 的深度为 \(\text{dep}(x)\),则访问它的概率就是 \(\dfrac1{2^{\text{dep}(x)}}\),最朴素的期望计算方式就是概率乘上线段树上节点的数值并全部加起来。考虑怎么优化这样一个过程,我们不能通过建树来求每个节点的值,考虑计算每个节点的贡献。易得每个叶子节点的贡献为 \(a_x\times\sum\limits_{i=0}^{\text{dep}(x)}\dfrac1{2^{\text{dep}(x)-i}}=a_x\times\left(2-\dfrac1{2^{\text{dep}(x)}}\right)\)。显然每个节点的 \(\text{dep}\) 值都是确定的,所以我们可以一遍 \(O(n)\) 计算出最初的答案。

当遇到区间加的修改时,答案增大了 \(x\times\sum\limits_{i=l}^r\left(2-\dfrac1{2^{\text{dep}(i)}}\right)\)。通过维护 \(2-\dfrac1{2^{\text{dep}(i)}}\) 的前缀和即可 \(O(1)\) 回答所有询问。

具体实现的时候不需要 \(\tt double\),只需要乘上一个数最后再除回去即可。因为题目保证答案乘上 \(\mathit{qwq}\) 是整数,所以这样做是可行的。只需判断需不需要开 \(\tt\_\_int128\)

C. P4243 [JSOI2009] 等差数列

很好的线段树练习题。

首先维护等差数列容易想到维护差分序列。那么差分后,等差数列就转化为给差分数列的两个单修和一个区修。考虑怎么统计答案,通过线段树维护区间最大子段和的套路,用 \(s_{0/1/2/3}\) 分别维护左右端点都不包含、包含左、包含右、左右都包含的最小划分数。重点在于 pushup,这里要注意一定是把左右儿子的包含左、包含右合并到都不包含或者都包含,不需要重复地把都不包含进行合并。结合代码理解会好一点。

friend SegTree operator+(const SegTree&x,const SegTree&y){SegTree res;res.l=x.l,res.r=y.r;bool fl=x.r==y.l;res.s[0]=min({x.s[2]+y.s[1]-fl,x.s[0]+y.s[1],y.s[0]+x.s[2]});res.s[1]=min({x.s[1]+y.s[1],x.s[3]+y.s[0],x.s[3]+y.s[1]-fl});res.s[2]=min({y.s[2]+x.s[2],y.s[3]+x.s[0],y.s[3]+x.s[2]-fl});res.s[3]=min({x.s[1]+y.s[3],y.s[2]+x.s[3],x.s[3]+y.s[3]-fl});return res;
}

注意结构体需要写构造函数进行初始化!

另外,差分数组我们只考虑 \([2,n]\) 的区间,因为第一位是和 \(0\) 进行差分,没有意义。

D. P1545 [USACO04DEC] Dividing the Path G

一个区间左右喷灌很不好处理,考虑把它转化为只向左喷灌,把喷灌区间 \(\times2\) 即可处理。原题中的 “奶牛指定区间只能由一个喷灌器喷灌” 可以转化为区间内部不能放置喷灌器,打标记即可。最后一个暴力 DP 就出来了。然后这题你就愉快地水过去了。

转移方程:\(f_i=\min\{f_j\}+1\)

正解当然是线段树优化 DP,主要是优化了区间取最小值的过程。跑得还没暴力快。

E. CF1975E Chain Queries

看似一眼题的一道树剖题。做法很多。

一种比较简单的做法是找全部黑点成为一条链的性质。易得(?的性质是:

如果全部黑点成为一条链,则试统计没有儿子是黑点黑点个数,记为 \(\mathit{cnt}\)。若 \(\mathit{cnt}=1\),直接输出 Yes(此时所有黑点必定成链且链的一端是所有黑点的祖先);若 \(\mathit{cnt}=2\),将两点记为 \(x,y\),则形成一条路径当且仅当 \(x\to y\) 的路径的黑点数量等于 \(\operatorname{dis}(x,y)+1\);若 \(\mathit{cnt}>2\) 必定是 No

实际上这个题已经做完了。可以把上文说的没有儿子是黑点的黑点用 unordered_set 维护,开一个数组统计每个黑点有多少个黑色儿子即可。每次对一个点取反影响的只有它自己和它父亲,维护也是容易的。路径问题直接树剖,容易发现这题只有一个单点修改和区间查询,所以用不着线段树,树状数组即可解决。

F. CF2042F Two Subarrays

官解的矩阵做法略显抽象,还是学习一下线段树维护八个标记。

G. P3833 [SHOI2012] 魔法树

傻逼树剖板子题。

H. P4340 [SHOI2016] 随机序列

诈骗题。注意到一个不太能注意到的一个注意到:任何一组带有加号的序列必定有一组带有减号的序列抵消它。所以我们维护的实际上只是乘法前缀。预处理乘法前缀并统计答案即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/872323.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多端响应式

重要!响应式开发 目录重要!响应式开发是什么?怎么实现?媒体媒体查询断点是什么适配方案栅格布局响应式栅格系统实例 是什么? 多终端显示不同,更好看 PC,ipad,手机适配 怎么实现? 媒体查询,断点: 视口宽不同,布局不同 移动端??? 320-480端口 rem 不考虑大尺寸,更…

公共图床-OIER试炼场

公共图床-OIER试炼场 如何使用? 1. 使用浏览器直接访问 https://api-cdn.u1128333.nyat.app:35910/2. 通过插件访问 插件下载点我 MIT License, ©2025 Chan. 在浏览器扩展中添加即可使用。

32. 样式表

一、样式表为了美化窗口或控件的外观,可以通过窗口或控件的调色板给窗口或控件按照角色和分组设置颜色,还可以对窗口或控件的每个部分进行更细致的控制,这涉及窗口或控件的样式表(Qt style sheets, QSS),它是从 HTML 的层叠样式表(cascading style sheets, CSS)演化而来…

TIA SCL编程清除字符串中所有的空格

今天做一个小的练习,这是2025年第一个记录的学习笔记。 在IA新建一个FC,名字叫做TrimSpace,建立以下内部变量:写一段SCL代码: #len := LEN(#str_in);#str_trim_out := ;FOR #i := 1 TO #len DO   IF MID(IN := #str_in, L := 1, P := #i) <> THEN   …

计算几何相关

打算慢慢记一下扫描线,辛普森法和凸包。扫描线 扫描线直接照搬了...这篇主要是给之后的积分和凸包之类留的。 就是用线段树解决计算几何问题。 板梯 如何处理平面内一群矩形的面积交? 考虑用面积的朴素定义,\(S=ab\),相当于一堆面积合到一起就是 \(b\) 个可以不同的 \(a\) …

树状数组(学习笔记)

例题一:P3374 【模板】树状数组 1 例题二:P3368 【模板】树状数组 2 作用:特征: 一个多用于区间修改,和单点查询。或区间查询单点修改的数据结构,其代码量较少,比较好写。 区别: 它与线段树的功能差不多,但线段树的可拓展性更强。也就是说:树状数组能做的,线段树都能…

Centos根目录扩容

CentOS磁盘在根目录下扩容(无卷组情况下)查看磁盘分区情况,sda3挂载在根目录下,新扩容增加的sda4挂在在/data下现在想把sda4同样挂载在根目录下解决方法:删除sda3,再重建sda3(注意:删除后不要退出,紧接着重建,注意重建后的起始位置) 删除sda3然后重建输入下面那个命…

U455764 The Rotation Game

U455764 The Rotation Game 题目理解 本题要求移动\(A-H\)中的一列或一行,使其整个一行和一列的数字移动,使最后的中间8个的数字相同。求最少需要移动的步数和它的操纵顺序思路 1.本题可以很显然的想到用 \(BFS\) 来枚举执行不同字母操作后结果,但每 \(BFS\) 一次就会增加八…

BUU SQL COURSE 2

BUU SQL COURSE 2 BUU SQL COURSE 2 和前面那题差不多,但是注一下找到的登录成功但是显示 fault。 注一下别的看一下,在另一个数据库里找到了 flag。本文来自博客园,作者:Maplisky,转载请注明原文链接:https://www.cnblogs.com/lbh2021/p/18682313