首页 > 其他分享 >2025 刷题计划 - 线段树

2025 刷题计划 - 线段树

时间:2025-01-20 20:45:00浏览次数:1  
标签:dep 黑点 text 线段 喷灌 2025 res 刷题

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] 随机序列

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

标签:dep,黑点,text,线段,喷灌,2025,res,刷题
From: https://www.cnblogs.com/laoshan-plus/p/18682494

相关文章

  • 20250120 T2 simu题解
    简单模拟(simu)【题目描述】给定$a_1,a_2,\ldots,a_n$和$b_1,b_2,\ldots,b_n$。对于所有整数$x\in[l,r]$,模拟以下过程并求出变量$res$的最终的值。res=0fori=1ton:ifx>=a[i]:x=x-a[i]res=res+b[i]【输入格式】......
  • 【第一天】零基础入门刷题Python-算法篇-数据结构与算法的介绍(持续更新)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、Python数据结构与算法的详细介绍1.基本概念2.Python中的数据结构1.列表(List)2.元组(Tuple)3.字典(Dictionary)4.集合(Set)5.字符串(String)3.Python中的常用算法1.排序算法2.搜索算法3.递......
  • 2025年专精特新小巨人企业申报时间(工信部小巨人认定是什么时候开始)
    随着国家对中小企业创新发展的持续支持,2025年专精特新小巨人企业的申报工作即将启动。工信部将组织开展小巨人企业的认定工作,以选拔和培育一批专注于细分市场、创新能力强、市场占有率高、掌握关键核心技术的优质企业。本文将详细介绍2025年专精特新小巨人企业的申报时间,帮助企......
  • 2025年专精特新小巨人企业申报奖励(工信部小巨人认定奖补多少)
    2025年专精特新小巨人企业申报奖励备受瞩目。工信部“小巨人”认定后奖补多少成为众多企业关注焦点。这一认定不仅是对企业在专业化、精细化、特色化、新颖化发展道路上所取得成果的高度认可,更是给予企业实实在在的资金支持与激励。各地方政府依据自身情况也纷纷出台配套政策,以......
  • 2025最新TikTok企业认证申请指南:要求及常见问题
    现如今,TikTok企业认证已成为众多跨境商家在TikTok营销的重要一环。通过获得TikTok的企业认证标识,不仅能增强品牌的官方性和权威性,还能享受更多企业专属权益。那么,如何申请并获得TikTok的企业认证标识呢?以下是2025最新的申请指南,助力你成功认证~一、TikTok企业认证的重要性......
  • 2025年云产品市场怎么样?云服务器性价比指南
    写作初衷:        作为一个购买多年云服务器经历的爱好者,最喜欢看各厂商的优惠活动,反复比较各厂商的优惠,找到最具性价比的那一款。        我就像一个互联网的猹,在京东云、阿里云、腾讯云的官网里反复对比、反复横跳,但不得不说,这个过程还是比较累的,尤其是网上......
  • 春秋杯2025冬季
    easy_flask有ssti注入,直接打{{config.__class__.__init__.__globals__['os'].popen('tacf???').read()}}file_copy上来给了个提示说是copy文件.然而不知道copy哪去了,只能看到文件多大.触发报错的时候看到了这样的提示这个copy估计不是php里原生的函数,而是自己定义的(......
  • 2025java面试常见八股文整理
    1.多线程编程下,怎么解决线程的数据安全问题?如果线程存在竞争临界资源,多线程访问下添加同步代码块synchronized解决,或者分布式排他锁进行临界资源控制。在分布式多线程环境下,线程的数据安全尽量不要产生连接资源,使用线程本地化ThreadLocal实现线程资源隔离。2.SpringIOC依......
  • 【大模型面试】常见问题及答案,一文搞定面试准备!2025年大模型最新最全面试题,助你吊打面
    大模型相关的面试问题通常涉及模型的原理、应用、优化以及面试者对于该领域的理解和经验。以下是一些常见的大模型面试问题以及建议的回答方式:请简述什么是大模型,以及它与传统模型的主要区别是什么?回答:大模型通常指的是参数数量巨大的深度学习模型,如GPT系列。它们与传统模......
  • C#/.NET/.NET Core技术前沿周刊 | 第 22 期(2025年1.13-1.19)
    前言C#/.NET/.NETCore技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NETCore领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿、推荐或自荐优质文章、项目、学习资源等。......