这是曾来过咱们学校集训的一位大神出的~

T1

题目大意

给出一棵带边权的无根树,求树上前$k$大的路径的长度。

$1 \leq n \leq 200000$

题解

想了一上午点分治,却发现只会$O(nlog^3n)$的......

正解是二分第$k$大的权值,用点分治判断,统计路径时用两个指针扫一下权值序列就行了......

这里记录一种巧妙的,常数更小的方法。

考虑序列求前$k$大路径的经典操作:

维护一个大根堆,初始将每个左端点和它所能到达的最远右端点以及距离构成的三元组压入堆中,按照距离排序。

每次从堆顶弹出一个区间,就把当前左端点的所有右端点中,与当前弹出右端点最接近但是更劣的一个右端点作为该三元组的新右端点,重新计算距离并将三元组压回堆内,重复$k$次即可取得前$k$大路径。

现在考虑如何在树上运用这种操作:

还是考虑点分治,对于每次点分治,找出分治子树中的每个节点所属的子树,及这个点到分治重心的距离,打包成二元组存下来。

可以发现,只有子树不同的两个节点构成的路径才是有效的。因此,对于每个分治重心,将打包好的二元组按距离从大到小排序成一个序列,从后往前预处理出每个二元组向后第一个所属子树与当前二元组不同的位置。

将每个二元组与其向后第一个所属子树与当前二元组不同的位置处的二元组打包后压入一个全局堆里,作为一条路径。

这个堆的功能类似序列版本时的堆,每次弹出堆顶元素后,将这个元素左端点在对应分治重心的序列中,下一个与当前左端点所在子树不同的二元组作为新的右端点,压回堆中。

可以发现,对于每个分治重心的每个二元组,最多只有一个对应的二元组在全局堆中,空间复杂度$O(nlogn)$。同时,对于维护最外层的堆,和对二元组序列的排序两部的复杂度均为$O(nlog^2n)$,因此时间复杂度为$O(nlog^2n)$。

T2

题目大意

维护一个序列,要求支持区间最大值、区间并上一个数、区间或上一个数三种操作。

题解

出于各种原因十天前刚考过原题大家都$A$了这题~

考虑线段树。

考虑在暴力递归到底以修改每个线段树节点的基础上添加优化,那么显然有一个结论:

若一个区间某一位的值全部相同,那么对于这一位来说,接下来进行任何的修改操作,都只需要区间打$tag$,而不用暴力递归到底。

具体实现时,只需要维护一下区间或和和区间并和,并判断一下是否全为$0$或$1$即可。

然后,考虑位运算的结合律:

$(A&B|C)&D=(A&(B&D))|(C&D)$

$(A&B|C)|D=(A&B)|(C|D)$

于是维护区间或标记和区间并标记,下传时强制先做并再做或。

此时,只要在区间或时,判断一下修改的值有$1$的位置在当前区间上是否全为$0$或$1$,如果为真则打标记停止递归。区间并同理。

复杂度可通过势能分析证得是$O(nklogn)$。

T3

这是个暂时不会待填的坑~

转载于:https://www.cnblogs.com/zltttt/p/8577253.html

2018.3.15校内互测总结-点分治-线段树相关推荐

  1. ACM-ICPC 2018 南京赛区网络预赛 Lpl and Energy-saving Lamps 线段树

    目录 ACM-ICPC 2018 南京赛区网络预赛 Lpl and Energy-saving Lamps 线段树 题面 题意 思路 ACM-ICPC 2018 南京赛区网络预赛 Lpl and En ...

  2. 校内互测第一周(East!XI~East!XV)总结(窝还是退役吧QAQ

    = =真是不想说啥了... 像我这种沙茶蒟蒻还是早点滚粗的好... Day1 East!XI 出题人:18357 打开题瞬间傻了...三道树上问题...三道... T1:给定一棵N个节点的无根树,求每 ...

  3. 互达的集合(线段树)

    problem 给定数组 l,rl,rl,r.求有多少个非空集合 SSS,满足 ∀i,j∈Sli≤j≤ri\forall_{i,j\in S}\ l_i\le j\le r_i∀i,j∈S​ li​≤ ...

  4. 2018.08.20高二互测

    2018.08.20 NOIp模拟赛 GKK大佬出的毒瘤题,烧脑.全是原题就不要密码保护了. 第一题 T1链接 ​ 一张图,每条边有代价也有限制,遍历过的点可以解锁这些限制,求最短路.这是一道套路题, ...

  5. 【校内互测】Sunshine’s string(merge) (状压dp)

    Sunshine's string(merge.cpp) [问题描述] 无聊的Sunshine大爷开始研究字符串.他找来了一个长度为n的01字符串,并制定了一些规则:每次可以将k个字符合并,得到一个新 ...

  6. 校内互测题 by LMY (FSN)

    这道题的题目描述得好像很烦,大概是要让物理攻击先攻击,然后去攻击魔法攻击,问如何物理攻击可以花最少的魔法攻击花费,当然我们不用输出如何物理攻击,只需要输出最少的魔法攻击花费就可以了,于是我们先预处理d ...

  7. 校内互测 B. 王者荣耀 (二分答案+dp)

    B. 王者荣耀 时间限制:1s 内存限制:128MB 问题描述 从未来回来后,他知道他最近要打 n 局王者荣耀,其中第 i 局需要耗时li,并且这个顺序在时间上是不可改变的.作为一个很(mei)有自制 ...

  8. 2018.09.24 codeforces 1053C. Putting Boxes Together(线段树)

    传送门 就是让你维护动态的区间带权中位数. 然而昨晚比赛时并没有调出来. 想找到带权中位数的中点可以二分(也可以直接在线段树上找). 也就是二分出第一个断点,使得断点左边的和恰好大于或等于断点右边的和 ...

  9. 2017.10.24队内互测——压轴出场的互测终曲|(*_-)

    出题人: Sherlock, Frank, WWQ, MurasameKatana 终于到了我们组出题啦. 题面都是我自己写的2333 Problem 1 :令咒 题目来源:http://codevs ...

最新文章

  1. java计算器的重点解决问题_java计算器问题
  2. 五分钟带你了解哈希算法
  3. 【pytorch】Metrics的工作原理
  4. 使用反射处理protobuf数据结构
  5. 安装或卸载英特尔快速存储技术时,提示“此程序有一个挂起的重新启动”
  6. 电脑显示器不亮主机正常_电脑显示屏不亮但是主机已开机怎么解决
  7. VB判断窗体是否加载函数
  8. MFC窗口之间传递数据(结构体)
  9. # 一点毕设小感悟(SnowNLP+可视化分析)
  10. java IO流:字节流、字符流
  11. 投影机拼接融合技术--UE4拼接
  12. ubuntu20.04 合并两个磁盘
  13. robots协议限制爬虫
  14. Python学习:图片数据归一化处理
  15. Springboot 实现将文件压缩,然后下载
  16. css3加载中loading代码js特效大全
  17. rstp 转hls_EasyHLS实现将IPCamera摄像机的RTSP转HLS直播输出
  18. 莱布尼兹是微积分奠基人吗?
  19. 【论文精度】Subdivision-Based Mesh Convolution Networks
  20. chatgpt api请求样例

热门文章

  1. 从头理解self-attention机制
  2. centos6.5 php5.2,Linux中PHP安装与配置(CentOS-6.5:php-5.2.13)
  3. 职称考试还要考计算机 英语,强烈建议取消所谓的英语职称和计算机考试
  4. 单片机与微处理器和微型计算机的关系,微处理器、CPU、微处理机、微机、单片机它们之间有何区别?...
  5. 除了java还学什么_学好Java编程除了努力还需要具备什么?
  6. html 逗号用什么替换,字符串用javascript数组中的逗号替换“↵”
  7. 三星 arm9 linux,基于arm9内核三星s3c2410平台下linux四键按键驱动程序
  8. python中get和set使用_Python对象属性的set和get方法
  9. Awcing算法--二进制
  10. fb50 sap 报记账码未定义_SAP隐秘的角落:记账代码Posting Key