当前位置: 首页 > news >正文

basic - segment tree

tricks

  • 离散化线段树,通常是一些点不会被更新到,但其实还是可以作为答案的。可以把它们并成一个虚点考虑。
    • P4087 [USACO17DEC] Milk Measurement S 这个题另一个重点是弄清楚什么时候统计答案,我们关心rk1的个数cnt和rk1的下标。为了维护这个要再加一个mx。
  • 维护某个子串有没有出现过的01线段树,可以不用维护它拼起来的子段,状压一下更方便。因为要修改,状压完还要状压所有同长度的有没有出现。
    • P13274 [NOI2025] 三目运算符
  • 信息维护答案不能通过合并得到 -> 把答案拆贡献变成可以通过合并维护的。
    • P3113 [USACO14DEC] Marathon G 维护不跳过总长度及删掉一个点的最大贡献。
  • 可以尝试在询问上建线段树,考虑修改对答案的贡献,如果原来的东西就是一个序列的话也要想到这也点(考虑原序列每个点对不同询问区间分别有怎么样的贡献)
    • P3616 富金森林公园 先考虑某一个状态下怎么让每一位对询问区间的答案产生贡献,现考虑没有重复的,上凸的形状会在水位大于其时使答案-1,下凹则在大于其时+1(从下往上扫描线),感觉这种有类似水位的东西都可以考虑慢慢漫上来的过程,然后直接维护区间加,单调查就好了(一开始写了不是差分的树状数组,脑子进水了)。修改的时候把原来\(p-1,p,p+1\)的位置减掉然后新的加上。
  • 线段树套并查集,信息注意要维护在当前这个用并查集维护了连通性的区间中,左端右端的祖先(一定要是祖先,父亲的话两端接不上),用于和别的线段树上节点合并。一定要记录下来的原因是如果全部用全局的fa数组维护连通性,之后修改的时候此区间的fa已经在维护更大区间的时候合并乱了,即维护的已经不是这个区间的连通性了。只要左右端点的原因是和别的合并只关心这个,至于其祖先可能不在两端并不重要,可以视作维护连通性的虚点。fa更应该理解为每次合并时对于此区间的临时数组,所以merge需要根据两个区间的该信息对fa进行重构。
    • P4121 [WC2005] 双面棋盘 注意实现细节,对应上文 code
http://www.hskmm.com/?act=detail&tid=11068

相关文章:

  • 势能分析揭开一些算法的秘密
  • 企业省钱又安全的5款Linux发行版:从Ubuntu到Pop!_OS全面解析
  • how to count
  • 第六章 数组
  • basic - graph theory
  • 详细介绍:阻塞 IO为什么叫BIO,非阻塞IO为什么叫NIO,异步IO为什么叫AIO
  • Ubuntu系统使用gcc和Makefile编译C程序
  • 构造选记
  • 0133_解释器模式(Interpreter)
  • trick杂记 例题
  • 代码随想录算法训练营第四天 | leetcode 24
  • 网络流 最小割、费用流
  • DP tricks
  • 碎碎念(十七)
  • OpenCV的一些API的使用
  • 2971:抓住那头牛
  • 高效测试的第一步:5个用例设计基础思维模型
  • MFC Button 控件完全指南:从基础到进阶 - 指南
  • Python笔记总结
  • vulnhub靶机:GoldenEye-v1
  • 8465:马走日
  • 性能调优之NUMA调优
  • 深入解析:SpringMVC静态资源与Servlet容器指南
  • CCPC Online 2025 游寄
  • CentOS 7 容器时遇到了 yum update 报错
  • MIT新论文:数据即上限,扩散模型的关键能力来自图像统计规律,而非复杂架构
  • 基于MATLAB的视频动态目标跟踪检测搭建方案
  • U522155 数据生成(小心电脑)
  • 实用指南:OSG中osgFX库
  • 如何将带有线网卡和无线网卡的台式机作为网关/路由器