根号分治学习笔记
1|0根号分治
根号分治其实一般是广义上的阈值分治,当范围不超过
之所以叫根号分治主要是大部分的应用都是在和一定时,不超过
1|1P3645 [APIO2015] 雅加达的摩天楼
思路:直接根号分治即可。
设状态
1|2P5309 [Ynoi2011] 初始化
题意:对等差数列下标加,区间和。
思路:一眼根分,但是小于根号的部分想了很久,感觉根周期有关,但是还是不会。
其实问题还是没往分块上想。可以直接根据周期来求,维护前缀后缀和就行了。
1|3P5072 [Ynoi2015] 盼君勿忘
题意:求区间所有子序列分别去重后的和。
思路:首先,每一个数的贡献是好算的:
然后才发现这样的数最多只有根号个,可以提前把这些数求出来,然后就没了。。。
1|4P8427 [COCI2020] Paint
题意:有
思路:(码农题) 考虑根号分治,把大小小于
1|5In a Trap
题意:有一颗以1为根的树,每个点上有一个点权ai,每次询问路径u到v上最大的
思路:神秘题。
不知道怎么就想到值域和树进行分块,就以 256 为块长,那么我们发现后 8 位和前面的是不影响的。我们设
1|6You Are Given a Tree
题意:有一棵
其中一个简单路径的集合被称为
树的每个节点至多属于其中一条路径,且每条路径恰好包含
对于
思路:考虑对于一个
考虑怎么优化。首先,答案显然是单调不增的,而且
1|7Frequency Problem (Hard Version)
题意:求最长的子区间使得其中有至少两个出现次数最多的元素。
思路:首先有结论:最终答案区间的众数一定有全局的众数。
证明很简单,如果全局众数不是区间的众数,那么可以把区间往外拓,一定存在两个众数且答案更优。
于是问题转成了求最长的区间满足有一个数出现次数和全局众数在这个区间的出现次数一样多。
考虑根号分治。如果另一个数的出现次数比
1|8P8330 [ZJOI2022] 众数
题意:给一个序列,你可以把一个区间中的数加上任意数,要求最大化序列的众数出现次数。
思路:考虑这个操作的实质就是把序列分成 3 份,求两边的众数出现次数和区间内众数出现次数和的最大值。
这种跟众数相关的显然不好
对于出现次数
然后就是小对小的贡献。这时可以直接扫描线,然后我们就需要快速维护区间众数。但是这时我们仅需处理出现次数不超过
于是最终的复杂度就是
1|9P8349 [SDOI/SXOI2022] 整数序列
题意:给定序列
思路:看上去又不太可以
可以对出现次数进行阈值分治。
可以直接
考虑这种询问的次数并不多,也可以暴力做,记忆化一下即可。
这种不好处理。考虑离线,对于
当
1|10「JOISC 2017 Day 4」Dragon 2
题意:平面上有
思路:计算几何+数据结构
因为所有颜色的点数和是
具体地,假设我们可以
如果
然后考虑怎么求答案。先考虑第一种情况,能做贡献的点就在这个点和线段的端点连的射线之间的部分。
考虑如何计算。
我们把这个点和线段端点连起来,设这个三角形的底角分别是
第二种情况和第一种类似,也可以转成二维数点。
复杂度
1|11「JOISC 2018 Day 3」比太郎的聚会
题意:给定含有
给定
思路:考虑我们有两种做法,一种是每次询问
1|12P5071 [Ynoi2015] 此时此刻的光辉
题意:求区间乘积的约数个数。
思路:一开始只会
__EOF__

本文链接:https://www.cnblogs.com/Xttttr/p/18014445.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】