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以获得更好的阅读体验! 据说, 退役了要写写回忆录. 但 ...
随机推荐
- RocketMQ系列3:核心技术介绍
1 介绍 RocketMQ是一款分布式消息中间件,其核心技术涉及多个核心概念,包括主题.队列.消息.生产者.消费者.消费者分组以及订阅关系.以下是对这些核心技术的详细说明: 2 核心技术实现 2.1 ...
- 对 .NET 开发者来说,Azure AD 改名为 Microsoft Entra ID 意味着什么?
对 .NET 开发者来说,Azure AD 改名为 Microsoft Entra ID 意味着什么? 原文地址:https://devblogs.microsoft.com/dotnet/azure ...
- 【数据库】MongoDB服务启动失败的问题。
1.确保MongoDB所在文件夹拥有所有权限 2.确保打开CMD窗口是以管理员身份运行的 3.配置文件中的路径应该为完整路径,且不包含空格和特殊字符(不建议包含) systemLog: destina ...
- 内华达大地测量实验室GNSS数据tenv3格式下载
GNSS时序形变位移数据下载 引言 下载方式 注意事项 引言 目的:教大家如何下载GNSS时序形变位移数据,本人主要是利用GNSS位移结果进行InSAR相关成果的精度验证工作.若大家需要在自己的研究领 ...
- 按部就班--从零开始建设k8s监控(二)
前言 书接上文,prometheus已经安装好了,并且能够对k8s的整体状态进行监控,但是我们还需要更多 环境准备 组件 版本 操作系统 Ubuntu 22.04.4 LTS docker 24.0. ...
- 关于vue加element-ui上传文件获取文件的sha256的值
首先使用element的上传文件的组件 安装依赖crypto-js npm i crypto-js <el-upload class="upload-demo" drag : ...
- 2024-12-28 AI智能体日报
- k8s~控制deamonset中pod的数量
DaemonSet 是 Kubernetes 中的一种控制器,用于确保集群中的每个节点(或特定标签选择器匹配的节点)运行一个 Pod 的副本.DaemonSet 通常用于运行集群守护进程,如日志收集. ...
- 原生js元素拖动效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ctfshow--web2 sql注入
这题是考sql注入,我们先用个万能语句注入 发现它上面会出现 欢迎你,ctfshow 那么这就很明显了,这个用户的名字就是ctfshow 那么猜测flag会不会是在flag的用户里面呢我们提交一下 如 ...