【DS】【AtCoder】Pakencamp 2022 Day2 H
2023.6.30 Problem Link
有 \(n\) 个帮派在打架,每个帮派有一个大小 \(a_i\),每相邻两个帮派有一个仇恨度 \(b_i\)。现在有 \(Q\) 次单点修改 \(a_i\) 或者 \(b_i\),然后给出区间 \([l,r]\),询问区间 \([l,r]\) 内的帮派打架后最后剩下的那个帮派是谁。
打架的规则是:每次选出 \(b_i\) 最大的相邻两个帮派打一架,人数较多的帮派获胜(相同则编号较小的获胜),然后败者全部加入胜者的帮派。
一个经典的值域减半思想 + 一个经典的双端点二分思想。
- 时光倒流
这个操作并不优美,考虑时光倒流,每次找到 \(b_i\) 最小的相邻帮派,然后把左边和右边较小的扔掉。
- 值域减半
注意到我们扔掉的是较小的一半,这意味着中间较大的一半会留着。于是就有这么一个类似于“不变量”的东西,只有区间的和减半的时候才会改变。如果我们每次可以“快进”到“不变量”改变的时候,就可以在 \(\log V\) 乘上快进一次的时间内解决问题。
设当前区间和为 \(X\),则我们希望找出缩小后的区间 \(\le X/2\) 的最早时刻。然后注意到,如果令 \(p\) 为最小的满足 \(\mathrm{sum}[l,p]\ge X/2\) 的点,那么不断缩小中的 \([l,r]\) 会始终包含 \(p\),直至下一步就会 \(\le X/2\) 为止,然后暴力减半一步。
- 双端点二分
我们开始“二分”这个区间 \([u,d]\)。一个区间怎么二分呢?令 \(u\) 当前的区间范围为 \([l_u,r_u]\),\(d\) 当前的区间范围为 \([l_d,r_d]\),我们希望每次“二分”将 \([l_u,r_u]\) 或者 \([l_d,r_d]\) 缩小一半。考虑找出 \(mid_u\) 和 \(mid_v\),然后分 \(\mathrm{sum}[mid_u,mid_v]\) 讨论。
如果 \(\mathrm{sum}[mid_u,mid_v]\le X/2\),此时不妨设 \(\min[mid_u,r_u]<\min[l_d,mid_d]\),那么如果在 \([l_d,mid_d]\) 中砍了一刀,那 \([mid_u,r_u]\) 之间也一定被砍了一刀,那 \(d\in[l_d,mid_d]\) 一定不合法,于是 \(d\) 可以往右边递归;
如果 \(\mathrm{sum}[mid_u,mid_v]> X/2\),此时不妨设 \(\min[l_u,mid_u]<\min[mid_d,r_d]\),那么如果在 \([l_u,mid_u]\) 中砍了一刀,那 \([mid_d,r_d]\) 之间也一定被砍了一刀,那 \(d\in[l_u,mid_u]\) 一定不合法(有些边界),于是 \(u\) 可以往右边递归。
无论如何,\(u,d\) 一定有一个可以往一边递归,所以这部分时间复杂度 \(O(\log n)\)。
总时间复杂度 \(O(n\log V\log n)\)。
【DS】【AtCoder】Pakencamp 2022 Day2 H的更多相关文章
- 【Data Structure】-NO.117.DS.1 -【Tree-23树】
[Data Structure]-NO.117.DS.1 -[Tree-23树] Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total ...
- AtCoder Beginner Contest 142【D题】【判断素数的模板+求一个数的因子的模板】
D - Disjoint Set of Common Divisors Problem Statement Given are positive integers AA and BB. Let us ...
- 【C#公共帮助类】JsonHelper 操作帮助类, 以后再也不用满地找Json了,拿来直接用
四个主要操作类:JsonConverter .JsonHelper .JsonSplit .AjaxResult 一.JsonConverter: 自定义查询对象转换动态类.object动态类转换j ...
- 数据库优化实践【MS SQL优化开篇】
数据库定义: 数据库是依照某种数据模型组织起来并存在二级存储器中的数据集合,此集合具有尽可能不重复,以最优方式为特定组织提供多种应用服务,其数据结构独立于应用程序,对数据的CRUD操作进行统一管理和控 ...
- Python开发【第二十二篇】:Web框架之Django【进阶】
Python开发[第二十二篇]:Web框架之Django[进阶] 猛击这里:http://www.cnblogs.com/wupeiqi/articles/5246483.html 博客园 首页 ...
- 【MyBatis源码分析】select源码分析及小结
示例代码 之前的文章说过,对于MyBatis来说insert.update.delete是一组的,因为对于MyBatis来说它们都是update:select是一组的,因为对于MyBatis来说它就是 ...
- 【C#公共帮助类】JsonHelper 操作帮助类
四个主要操作类:JsonConverter .JsonHelper .JsonSplit .AjaxResult 一.JsonConverter: 自定义查询对象转换动态类.object动态类转换js ...
- [置顶] 数据库优化实践【MS SQL优化开篇】
数据库定义: 数据库是依照某种数据模型组织起来并存在二级存储器中的数据集合,此集合具有尽可能不重复,以最优方式为特定组织提供多种应用服务,其数据结构独立于应用程序,对数据的CRUD操作进行统一管理和控 ...
- NOIP2016天天爱跑步 题解报告【lca+树上统计(桶)】
题目描述 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.«天天爱跑步»是一个养成类游戏,需要玩家每天按时上线,完成打卡任务. 这个游戏的地图可以看作一一棵包含 nn个 ...
- (43). Spring Boot动态数据源(多数据源自动切换)【从零开始学Spring Boot】
在上一篇我们介绍了多数据源,但是我们会发现在实际中我们很少直接获取数据源对象进行操作,我们常用的是jdbcTemplate或者是jpa进行操作数据库.那么这一节我们将要介绍怎么进行多数据源动态切换.添 ...
随机推荐
- vue2升级vue3:class component的遗憾
在vue2,class 写法真的非常爽 import { Component as tsc } from 'vue-tsx-support'; import { Component, Watch } ...
- 再谈BOM和DOM(4):DOM0/DOM2事件处理分析
JavaScript能够让网站对用户的各种操作及时做出"反馈",响应用户交互行为,而这些就是:DOM,事件以及事件处理 DOM就是操作的元素,这个看<再谈BOM和DOM(1) ...
- 对话 BitSail Contributor | 刘啸:参与开源,提升自我技术力
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 2022 年 10 月,字节跳动 BitSail 数据引擎正式开源.同期,社区推出 Contributor 激励计 ...
- CentOS 硬盘扩容
首先在虚机内将硬盘空间扩大,Hyper-V 需要将检查点删除 查看物理卷和卷组,并将物理卷加入到卷组 lvextend -l +100%FREE /dev/centos/root #将剩余空间添 ...
- Interceptor Handle 执行顺序
preHandle 调用时间:Controller方法处理之前 执行顺序:链式Intercepter情况下,Intercepter按照声明的顺序一个接一个执行 若返回false,则中断执行,注意:不会 ...
- 遇事不决,量子力学;不懂配色,赛博朋克。推荐一个Python可视化库
遇事不决,量子力学;不懂配色,赛博朋克.推荐一个Python可视化库 12月10日,历经多次跳票后,波兰公司CD Projekt Red制作的<赛博朋克2077>终于正式发售,在Steam ...
- Codeforces 144A Arrival of the General (水)
A Ministry for Defense sent a general to inspect the Super Secret Military Squad under the command o ...
- 0x69 图论-二分图的覆盖与独立集
A:Machine Schedule 输入 5 5 10 0 1 1 1 1 2 2 1 3 3 1 4 4 2 1 5 2 2 6 2 3 7 2 4 8 3 3 9 4 3 0 输出 3 在二分图 ...
- 前端科普系列(5):ESLint - 守住优雅的护城河
作者:Morrain [前端科普系列]帮助阅读者了解web前端,主要覆盖web前端的基础知识,但不深入讲解,定位为大而全并非细而精,适合非前端开发的同学对前端有一个系统的认识,能更好的与前端开发协作. ...
- Java 中初始化 List 的五种方法
1.构造 List 后使用 List.add 初始化 1 List<String> stringList = new LinkedList<>(); 2 stringList. ...