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

CodeForces 20251003 - ?

1. 2152F Triple Attack

超级倍增题

题意

若一个可重集任意三个元素的最大值与最小值之差大于给定常数 zzz,那么称其是安全的。现在给出一个递增的数列,若干次询问,每次问一个区间,求该区间的最长安全子序列的长度。

n,Q≤2.5⋅105,ai≤109n,Q\le2.5\cdot10^5,a_i\le10^9n,Q2.5105,ai109

做法

如果限制是两个元素只差,那么容易想到用 lower_bound 和倍增求解。

现在是三个元素,贪心的做法是先去区间前两个元素,然后后面若一个元素加进来合法那么一定取,证明是容易的:若前两个元素不取,那么把取到的前两个元素换成区间前两个元素一定可行;若遇到一个合法的元素不直接取,那么取后面的元素一定会对后续限制更强。

所以我们仍然可以考虑用倍增,元素 aia_iai 的下一个元素表示下标在 i+1i+1i+1 之后(不含)的第一个合法元素,反复取下一个元素可以得到一条合法链。我们考虑从 l,l+1l, l+1l,l+1 开始的两条链,要么他们不相交,那么就得到答案,要么他们相交,发现相交的元素类似 LCA,具体来说:考虑在一个元素和该元素的下一个元素之间建边,lca(l,l+1)lca(l, l+1)lca(l,l+1) 即为最早相交处,那么只要再取 lca,lca+1lca, lca+1lca,lca+1 重复上述步骤即可,这样多次从 lll 跳跃到 lca(l,l+1)lca(l, l+1)lca(l,l+1) 的过程也可以倍增,倍增到最后如果 lca>rlca>rlca>r 那么就把最后一段按照不相交时的“下一个元素”的倍增求。

简单来说是一个先大步倍增,后小步倍增的感觉,复杂度 O((n+Q)log⁡n)O((n+Q)\log n)O((n+Q)logn)

code

总结

如果选取元素的过程是线性的贪心做法,那么可以考虑倍增。考虑倍增到相同位置是可以考虑转化为树上 LCA。

http://www.dtcms.com/a/443266.html

相关文章:

  • node服务端通过socket.io保持长连接通信示例
  • Super-Resolution Delay-Doppler Estimation for OFDM Passive Radar
  • 九江开发区建设环保局网站贵州住房建设厅官网查询
  • 郑州诺耀科技 - 郑州高端网站建设营销推广网站路径怎么做
  • 招聘网站源码下载岳阳市交通建设投资公司门户网站
  • 单细胞空间--免疫细胞与肾脏细胞的时空相互作用调控自身免疫性肾病中肾小球新月体形成
  • 巨野做网站的网站策划与运营考试题
  • 正品海外购网站有哪些中国十大建筑设计院排名
  • Docker Compose 多容器编排实战
  • 初创公司 建网站网站设计和营销
  • 救援启动!
  • Android 事件分发机制 图解
  • 做网站价钱电脑版qq在线登录网页入口
  • 140、【OS】【Nuttx】【周边】效果呈现方案解析:strace 日志解析(六)
  • 免费网站建设软件大全wordpress禁止中国ip
  • 有界区域上具有常数右端项的泊松方程解的上界估计
  • 做区位分析的地图网站wordpress主题分类目录主题
  • 网站建设实习每天内容手机网站开发 html
  • 手机网站制作案例教育网站建设备案
  • 网站开发时的闭包写法进一步加强区门户网站建设管理办法
  • 计算机网站设计怎么做扬中信息网
  • 专业网站名词解释资讯网站 怎样 增强用户粘度
  • 现代C++——并发编程
  • Dotnet通过OpenAI方式接入DeepSeek
  • 第八课(零基础友好版)|第一次训练模型(Teachable Machine,超详细)
  • 定制制作网站公司建筑模型网站有哪些
  • 【多线程】无锁数据结构(Lock-Free Data Structures)是什么?
  • YOLO入门教程(番外):卷积神经网络—卷积神经网络(LeNet)
  • 哪里可以做寄生虫网站wordpress链接默认是什么样子
  • 网站开发常用插件怎样保存网站资料 做证据