首页 > 其他分享 >KTT学习笔记

KTT学习笔记

时间:2024-02-14 17:45:28浏览次数:32  
标签:题意 子段 KTT 笔记 学习 区间 维护 最大

KTT 学习笔记

KTT 是由 EI 给出的解决区间加正数、区间最大子段和的数据结构。

大体的思路是在把普通最大子段和的信息看成和增量有关的一次函数,然后维护增量为多少时取到最大值的信息会改变,相当于是维护凸壳,但是只维护当前段和当前段的末尾位置,通过势能分析可以得到复杂度是 \(O((n+m)\log^3n)\),实际跑起来非常快,和 \(\log^2n\) 差不多。

P5693 EI 的第六分块

题意:区间加正数,区间最大子段和。

思路:模版题,可以用来练手。

P5073 [Ynoi2015] 世上最幸福的女孩

题意:全局加,区间最大子段和。

思路:离线下来,把每次询问时累计加了多少求出来,从小到大排序,这样就转成了全局加正数,区间最大子段和。

P6792 [SNOI2020] 区间和

题意:区间对一个数取 \(max\),区间最大子段和。

思路:吉司机线段树+KTT。

因为有区间取 \(max\) 操作,只有吉司机线段树可以维护,而我们每次会影响最大子段和的情况就是对最小值进行区间修改,发现这刚好是 KTT 可以维护的东西,其余的情况都不会影响最大子段和。

复杂度应该是和 KTT 一致,就是说两种势能可以分开考虑。

The Awesomest Vertex

题意:给定一棵根为 \(1\) 的有根树,每个节点有两个权值 \(a[i]\) 和 \(b[i]\) 。定义 \(R(v)\) 为 \(v\) 祖先的集合(包括自己),则一个节点 \(v\) 有多棒取决于其真棒程度,真棒程度是这样定义的:

\[\left| \sum_{w \in R(v)} a_w \right| \cdot \left| \sum_{w \in R(v)} b_w \right| \]

\(|x|\) 表示 \(x\) 的绝对值。

现在请你支持两种操作:

  • \(1 \ \ v \ \ x\) — 将 \(a_v\) 加上 \(x\)
  • \(2 \ \ v\) — 输出以 \(v\) 为根的子树中最大的真棒程度

思路:发现很像区间加区间最大子段和,但是不会处理绝对值。

其实处理绝对值只需把 \(b\) 取反再做一遍即可。

而且这道题求的是单点值,不用维护除了 \(sum\) 之外的信息。

CF1830F The Third Grace

题意:给定一个数轴上的 \(n\) 个区间和 \(m\) 个点。第 \(i\) 个区间覆盖坐标 \([l_i, r_i]\),第 \(i\) 个点在坐标 \(i\) 处,并且具有系数 \(p_i\)。

最初,所有点都未激活。你需要选择一些点来激活。对于每个区间 \(i\),我们定义它的代价为:

  • 若区间内没有被激活的点,则代价为 \(0\);
  • 否则,代价为在区间内坐标最大的被激活点的系数。

你的任务是通过选择哪些点激活,使得所有区间的代价之和最大。

思路:很厉害的题目。

设 \(f[i]\) 表示以 \(i\) 为最后一个被选中的位置的方案的最大值,其中不包含 \(i\) 的贡献。

考虑怎么转移。枚举下一个位置 \(j\),有 \(f[i]+cnt[i][j]p_i\rightarrow f[j]\),其中 \(cnt[i][j]\) 表示 \(l\le i\le j<r\) 的区间数量。

考虑扫描线来维护所有 \(f[i]+cnt[i][j]p_i\),记为 \(g_i\),那么每次当 \(j\rightarrow j+1\) 时,会对所有 \(r=j\) 的区间 \([l,r]\),令 \(g_i\rightarrow g_i+p_i\)。

这就是 KTT 可解决的问题了。

标签:题意,子段,KTT,笔记,学习,区间,维护,最大
From: https://www.cnblogs.com/Xttttr/p/18015339

相关文章

  • 卡方分布笔记
    Thechi-squaredistributionisacontinuousprobabilitydistributionthatiswidelyusedinstatisticalinference,particularlyinthecontextofhypothesistestingandintheconstructionofconfidenceintervals.Itarisesprimarilyinthecontextofest......
  • 莫队学习笔记
    莫队莫队是一种常见的离线处理区间查询问的方法。莫队的思想是把序列分块,然后把询问按照左端点所在块为第一关键字,右端点为第二关键字排序,然后处理询问,维护指针\(l,r\)表示当前处理的区间是\([l,r]\),每次根据询问区间来移动指针计算贡献。关于复杂度。假设指针移动的复杂度......
  • Go语言精进之路读书笔记第26条——了解接口类型变量的内部表示
    接口是Go这门静态语言中唯一“动静兼备”的语言特性接口的静态特性接口类型变量具有静态类型,比如:vareerror中变量e的静态类型为error支持在编译阶段的类型检查:当一个接口类型变量被赋值时,编译器会检查右值的类型是否实现了该接口方法集合中的所有方法接口的动态特性接......
  • Check if a given binary tree is BST【2月14日学习笔记】
    点击查看代码//CheckifagivenbinarytreeisBST#include<iostream>#defineMIN-999999#defineMAX999999structnode{intdata;node*left;node*right;};node*getnewnode(intx){node*temp=newnode;temp->data=x;......
  • 矩阵加速学习笔记
    矩阵加速矩阵加速主要是把DP的转移写成矩阵的形式,然后用矩阵快速幂优化。可以用矩阵快速幂优化要求矩阵的运算是满足有结合律的,常用的\(\text{min,+}\)卷积等。还有一些特殊技巧,比如多组询问时可以预处理幂次的矩阵然后查询时直接用行向量来乘,以及存在矩阵光速幂。P4223......
  • Markdown学习
    Markdown学习标题+空格+标题=一级标题(enter)+空格+标题=二级标题以此类推(最多到六级)字体helloworld1.加粗——前后加星号(两个)helloworld2.斜体——前后加星号(一个)helloworld3.斜体加粗——前后加星号(三个)helloworld3.删除线——前后加波浪号(两个)helloworld引......
  • pytorch深度学习入门(8)之-Torchaudio使用Tacotron2 文本转语音
    https://blog.csdn.net/ajunbin859/article/details/134380417?ops_request_misc=&request_id=&biz_id=102&utm_term=pytorch%E7%89%88%E6%9C%AC%E7%9A%84tacotron%E8%AF%A6%E7%BB%86%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B&utm_medium=distribute.pc_search_r......
  • 【机器学习】数据清洗之处理异常点
    ......
  • 拓展学习 (面试)
    classScratch{publicstaticvoidmain(String[]args){//整数拓展:进制二进制0b十进制八进制0十六进制0xinti=10;inti2=010;//八进制0inti3=0x10;//十六进制0x0-9A-F16System.out.println(i);System.out.println(i2);System......
  • 【运维测试】移动测试自动化知识总结第1篇:移动端测试介绍(代码笔记已分享)
    本系列文章md笔记(已分享)主要讨论移动测试相关知识。主要知识点包括:移动测试分类及android环境搭建,adb常用命令,appium环境搭建及使用,pytest框架学习,PO模式,数据驱动,Allure报告,Jenkins持续集成。掌握操作app的基本api,掌握元素定位及获取元素信息的api,掌握事件操作api,掌握app模拟手势......