P4118 [Ynoi2018] 末日时在做什么?有没有空?可以来拯救吗?
YNOI 智慧题
EasyVer1 [Ynoi Easy Round 2015] 世上最幸福的女孩
EasyVer2 小白逛公园
先看 EasyVer2
单点修改 区间查询最大子段和
考虑在线段树维护 前缀max
,后缀max
,sum
,和ansmax
合并的时候分讨即可
修改直接下放到底后回退 pushup
即可
接下来是 EasyVer1
全局修改 区间查询最大子段和
思考全局修改的实质
sum
是好维护的
对于 前缀max
和 后缀max
而言 全局修改是加上了一个一次函数
ansmax
是由 前缀max
和 后缀max
推出的
所以问题就是 前缀max
和 后缀max
怎么维护
其实这是一个经典问题 在斜率优化里面经常使用
就是维护一个上凸壳 根据斜率二分定点
但是 问题又出现了 我们有两个上凸壳 抽象一下问题
我们有2个上凸壳 不妨记为 \(f(x)\) 与 \(g(x)\) 我们需要求 \(f(x) + g(x)\) 的最大值
问题变成了 geometry
这个是 闵可夫斯基和 的应用之一
我们直接合并两个凸包然后在新凸包里面二分即可
于是 EasyVer2
就写完了
接下来是 boss 战
典型的想法是利用 EasyVer2
的全局加分块
然后整块就变成了 EasyVer2
,散块重构线段树
分析复杂度
- 整块修改 \(O(1)\)
- 散块修改 \(O(B\ log\ B)\)
- 整块查询 \(O(B\ log\ B)\)
- 散块查询 \(O(B\ log^2\ B)\)
综上 \(O(n\sqrt n\log n)\)
1s 1e5 这对吗
考虑优化
- 零散修改
我们不一定要重建整棵线段树,而是考虑在子树上打tag
,但是这个tag
不能打在节点上 这样会干扰原来的标记 打在凸包上就不会有这个问题 - 整块查询
分块, 离线? 逐块处理!把查询按tag
排序以后处理 用一个指针做就可以到 线性?
不对 你的排序确有log! 但是基数排序就不会有这个问题
这样我们就优化到了 \(O(m \sqrt n)\)。
接下来常数优化一下就好了。
鸣谢:
getdiff
luogu608273
geomerty
luogu765066
P4118 [Ynoi2018] 末日时在做什么?有没有空?可以来拯救吗?的更多相关文章
- [Ynoi2018]末日时在做什么?有没有空?可以来拯救吗?
这道题真的超级...毒瘤 + 卡常 + 耗 RP 啊... 传送门 noteskey 题解看 shadowice 大仙 的 code 如果发现自己 T 掉了,别心急,洗把脸再交一遍试试... //by ...
- openerp模块收藏 auto_setup 自动帮你完成建新库时必做几个操作(转载)
auto_setup 自动帮你完成建新库时必做几个操作 原文:http://shine-it.net/index.php/topic,6777.0.html 模块地址: https://github. ...
- 遇到问题或bug时要做的事。
1,做事细心,只有细心才能减少bug量,做总结. 2,开发中遇到bug和错误,第一要想到是程序代码的问题.而首先想到的不是其他问题(比如版本,框架或兼容问题等). 3,程序不能按照自己的意愿执行,时先 ...
- ARIMA模型——本质上是error和t-?时刻数据差分的线性模型!!!如果数据序列是非平稳的,并存在一定的增长或下降趋势,则需要对数据进行差分处理!ARIMA(p,d,q)称为差分自回归移动平均模型,AR是自回归, p为自回归项; MA为移动平均,q为移动平均项数,d为时间序列成为平稳时所做的差分次数
https://www.cnblogs.com/bradleon/p/6827109.html 文章里写得非常好,需详细看.尤其是arima的举例! 可以看到:ARIMA本质上是error和t-?时刻 ...
- iOS端临近封包时要做哪些事情?
iOS封包前的注意事项: 0.功能测试,打点测试都已OK 1.创建case,使用master执行此轮case,修改版本号 2.建议使用各个系统的机型,如8,9,10,11,12, iPad等 3.ma ...
- javascript 使用 load 和 unload 事件,解决浏览器打开和关闭时需要做的操作。
最近有一个业务,就是修改一个业务需要加上锁.也就是打开浏览器时,加锁.等用户操作完毕,关掉浏览器之后在把锁打开.一开始想问题很局限.只是想着,关闭浏览器解锁,刷新页面不做操作.然后就一直在找在调用un ...
- Mybatis与Spring集成时都做了什么?
Mybatis是java开发者非常熟悉的ORM框架,Spring集成Mybatis更是我们的日常开发姿势. 本篇主要讲Mybatis与Spring集成所做的事情,让读过本文的开发者对Mybatis和S ...
- MHA在监控和故障转移时都做了什么
转自 https://blog.csdn.net/ashic/article/details/75645479 以下是MHA(masterha_manager)在监控和故障切换上的基本流程 验证复制配 ...
- iOS 应用程序启动时要做什么
当您的应用程序启动(无论是在前台或后台),使用您的应用程序委托application:willFinishLaunchingWithOptions:和application:didFinishLaun ...
- 【扯淡篇】CTSC/APIO/SDOI R2时在干什么?有没有空?可以来做分母吗?
注意: 我比较弱, 并没有办法把外链bgm搞成https, 所以大家可以选择"加载不安全的脚本"或者把https改成http以获得更好的阅读体验! 据说, 退役了要写写回忆录. 但 ...
随机推荐
- .NET 8 中的 ASP.NET Core 指标与 Grafana 仪表板入门
.NET 8 中的 ASP.NET Core 指标与 Grafana 仪表板入门 原文地址:https://devblogs.microsoft.com/dotnet/introducing-aspn ...
- sqlalchemy 的 schema 合并模块 alembic 使用
alembic 很好的解决了升级数据库改变表结构的传统难题,官方的推荐用法是当一个工具用,这是从 Stack Overflow 扒到的直接用内部 api 的代码,操作有点像 diff_patch. 来 ...
- 虚拟机安装 Win10 ,无法启动,报错EFI Network ... Time out
问题情况 VMWare 16 安装 win10 的镜像文件,无法启动,报错 EFI Network ... Time out 解决办法 虚拟机设置中 固件类型 改用 BIOS 已解决
- library initialization failed - unable to allocate file descriptor table - out of memoryAborte
问题描述: 使用Docker run container 的时候, 容器在启动几秒后自动退出 , 或者不退出,但里面的服务无法启动成功. 此例的服务是用 java -jar 来启动一个服务. 使用 d ...
- 龙哥量化:通达信macd黄白线变色公式macd金叉怎么写macd死叉怎么写(需要继续优化,各种变色方式)
你提出的任何逻辑要求,只要是软件能实现的,我都能用通达信写出来,我レメLong622889通达信.大智慧.文华.博易的编程逻辑差不多,只是个别函数不一样.TB交易开拓者.金字塔和文华8,都是专业的期货 ...
- Qt/C++音视频开发70-无感切换通道/无缝切换播放视频/多通道流畅切换/不同视频打开无缝切换
一.前言 之前就写过这个方案,当时做的是ffmpeg内核版本,由于ffmpeg内核解析都是代码实现,所以无缝切换非常完美,看不到丝毫的中间切换过程,看起来就像是在一个通道画面中.其实这种切换只能说是取 ...
- Qt编写的项目作品36-秘钥生成工具
一.功能特点 (一)常规秘钥机制 远程联网激活,每次启动都联网查看使用时间等,这种方法最完美,缺点是没法联网的设备就歇菜了,而很多设备都是要求离线使用无法联网. 通过获取本地的硬盘+CPU等硬件的编号 ...
- Qt开源作品32-文本框回车焦点下移
一.前言 这个demo由于太过简单,而不用过多的文字描述,其实就是实现了在一个文本框中输入完成以后,回车自动跳入下一个文本框,焦点下移,这个在很多的社保系统.医疗系统等系统中很常用,因为那些系统需要很 ...
- 鸿蒙OS开发秘籍:打造优雅的登录状态管理系统
一.前言 在鸿蒙OS开发过程中,随着应用规模的扩大,登录状态管理逐渐成为系统设计中的一个挑战.一个清晰.高效的登录状态管理系统不仅可以简化开发流程,还能提升用户体验.本文将分享一种优雅的登录状态管理设 ...
- [转]idea2021.1破解版 附安装教程免激活码
参看链接:http://www.ddooo.com/softdown/190256.htm 百度网盘地址:https://pan.baidu.com/share/init?surl=qwywmPK-F ...