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以获得更好的阅读体验! 据说, 退役了要写写回忆录. 但 ...
随机推荐
- openEuler欧拉安装Docker
1. dnf配置 # 更新镜像源缓存 dnf makecache # 修改chrony时间同步配置 sed -i 's/pool pool.ntp.org iburst/pool ntp.aliyu ...
- 记一个注意事项:从 forEach argument 返回的 Promise 被忽略
举例说明: const arr = [1, 2, 3] arr.forEach(async item => { // ... }) 上面的代码校验会出一个警告,从 forEach argumen ...
- git 忽略某些文件
如果git项目里没有 '.gitignore' 文件,则需要执行下面的操作,生成一个 生成 '.gitignore' 文件 1. git bash 打开git窗口 执行:touch .gitign ...
- Flutter 引用包命名冲突,重复引用
Flutter 引用包命名冲突,重复引用 报错信息 lib/page.dart:92:11: Error: 'Response' is imported from both 'package:get/ ...
- C# 转 Java
代码级转换,目前唯一可用的方案是 Tangible C# to Java Converter. 把编译后的 IL 转为 bytecode 再反编译也是一个思路,没有找到相关实现. 转换难点并不是语法, ...
- 【Python】【爬虫】【问题解决方案记录】调试输出存在数据,print在控制台确丢失数据
如下图,调试可以看到数据是完整的 但是print输出的,恰好丢失了中间的一大堆数据.对,下图打问号的地方应该是小说才对. 看代码可能看不出缺失内容,可视化看看 对吧,刚好缺失了小说. 后来我尝试用写文 ...
- [转]IRIG-B码授时工作原理
在授时设备中有一种是B码授时的,但是大部分人不太清楚何为B码授时?这种类型的授时工作原理是怎么样? 首先我们要知道什么是B码,然后再介绍它的授时工作原理,B码是一种电力术语,它是IRIG-B码的通俗叫 ...
- C# – XmlSerializer:字符串“2020-07-31 09:29:16”不是有效的 AllXsd 值。
C#中使用XmlSerializer对字符串进行反序列化时,提示:字符串"2020-07-31 09:29:16"不是有效的AllXsd值. 原因: 先说下为什么会出现这样的错误, ...
- IM消息ID技术专题(七):网易严选分布式ID的技术选型、优化、落地实践
1.引言 在<IM消息ID技术专题>系列文章的前几篇中,我们已经深切体会到消息ID在分布式IM聊天系统中的重要性以及技术实现难度,各种消息ID生成算法及实现虽然各有优势,但受制于具体的应用 ...
- windows平台下,web与app交互方式探索
前言 web与app孰优孰劣暂且不争论,也许一方永远代替不了另一方.一个系统有可能同时包含web和app:web和app紧密配合下,才能给用户更好的体验.web如何将信息传达给app?这就是本文要探索 ...