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] 末日时在做什么?有没有空?可以来拯救吗?的更多相关文章

  1. [Ynoi2018]末日时在做什么?有没有空?可以来拯救吗?

    这道题真的超级...毒瘤 + 卡常 + 耗 RP 啊... 传送门 noteskey 题解看 shadowice 大仙 的 code 如果发现自己 T 掉了,别心急,洗把脸再交一遍试试... //by ...

  2. openerp模块收藏 auto_setup 自动帮你完成建新库时必做几个操作(转载)

    auto_setup 自动帮你完成建新库时必做几个操作 原文:http://shine-it.net/index.php/topic,6777.0.html 模块地址: https://github. ...

  3. 遇到问题或bug时要做的事。

    1,做事细心,只有细心才能减少bug量,做总结. 2,开发中遇到bug和错误,第一要想到是程序代码的问题.而首先想到的不是其他问题(比如版本,框架或兼容问题等). 3,程序不能按照自己的意愿执行,时先 ...

  4. ARIMA模型——本质上是error和t-?时刻数据差分的线性模型!!!如果数据序列是非平稳的,并存在一定的增长或下降趋势,则需要对数据进行差分处理!ARIMA(p,d,q)称为差分自回归移动平均模型,AR是自回归, p为自回归项; MA为移动平均,q为移动平均项数,d为时间序列成为平稳时所做的差分次数

    https://www.cnblogs.com/bradleon/p/6827109.html 文章里写得非常好,需详细看.尤其是arima的举例! 可以看到:ARIMA本质上是error和t-?时刻 ...

  5. iOS端临近封包时要做哪些事情?

    iOS封包前的注意事项: 0.功能测试,打点测试都已OK 1.创建case,使用master执行此轮case,修改版本号 2.建议使用各个系统的机型,如8,9,10,11,12, iPad等 3.ma ...

  6. javascript 使用 load 和 unload 事件,解决浏览器打开和关闭时需要做的操作。

    最近有一个业务,就是修改一个业务需要加上锁.也就是打开浏览器时,加锁.等用户操作完毕,关掉浏览器之后在把锁打开.一开始想问题很局限.只是想着,关闭浏览器解锁,刷新页面不做操作.然后就一直在找在调用un ...

  7. Mybatis与Spring集成时都做了什么?

    Mybatis是java开发者非常熟悉的ORM框架,Spring集成Mybatis更是我们的日常开发姿势. 本篇主要讲Mybatis与Spring集成所做的事情,让读过本文的开发者对Mybatis和S ...

  8. MHA在监控和故障转移时都做了什么

    转自 https://blog.csdn.net/ashic/article/details/75645479 以下是MHA(masterha_manager)在监控和故障切换上的基本流程 验证复制配 ...

  9. iOS 应用程序启动时要做什么

    当您的应用程序启动(无论是在前台或后台),使用您的应用程序委托application:willFinishLaunchingWithOptions:和application:didFinishLaun ...

  10. 【扯淡篇】CTSC/APIO/SDOI R2时在干什么?有没有空?可以来做分母吗?

    注意: 我比较弱, 并没有办法把外链bgm搞成https, 所以大家可以选择"加载不安全的脚本"或者把https改成http以获得更好的阅读体验! 据说, 退役了要写写回忆录. 但 ...

随机推荐

  1. openEuler欧拉安装Docker

    ​1. dnf配置 # 更新镜像源缓存 dnf makecache # 修改chrony时间同步配置 sed -i 's/pool pool.ntp.org iburst/pool ntp.aliyu ...

  2. 记一个注意事项:从 forEach argument 返回的 Promise 被忽略

    举例说明: const arr = [1, 2, 3] arr.forEach(async item => { // ... }) 上面的代码校验会出一个警告,从 forEach argumen ...

  3. git 忽略某些文件

    如果git项目里没有  '.gitignore' 文件,则需要执行下面的操作,生成一个 生成 '.gitignore' 文件 1. git bash  打开git窗口 执行:touch .gitign ...

  4. Flutter 引用包命名冲突,重复引用

    Flutter 引用包命名冲突,重复引用 报错信息 lib/page.dart:92:11: Error: 'Response' is imported from both 'package:get/ ...

  5. C# 转 Java

    代码级转换,目前唯一可用的方案是 Tangible C# to Java Converter. 把编译后的 IL 转为 bytecode 再反编译也是一个思路,没有找到相关实现. 转换难点并不是语法, ...

  6. 【Python】【爬虫】【问题解决方案记录】调试输出存在数据,print在控制台确丢失数据

    如下图,调试可以看到数据是完整的 但是print输出的,恰好丢失了中间的一大堆数据.对,下图打问号的地方应该是小说才对. 看代码可能看不出缺失内容,可视化看看 对吧,刚好缺失了小说. 后来我尝试用写文 ...

  7. [转]IRIG-B码授时工作原理

    在授时设备中有一种是B码授时的,但是大部分人不太清楚何为B码授时?这种类型的授时工作原理是怎么样? 首先我们要知道什么是B码,然后再介绍它的授时工作原理,B码是一种电力术语,它是IRIG-B码的通俗叫 ...

  8. C# – XmlSerializer:字符串“2020-07-31 09:29:16”不是有效的 AllXsd 值。

    C#中使用XmlSerializer对字符串进行反序列化时,提示:字符串"2020-07-31 09:29:16"不是有效的AllXsd值. 原因: 先说下为什么会出现这样的错误, ...

  9. IM消息ID技术专题(七):网易严选分布式ID的技术选型、优化、落地实践

    1.引言 在<IM消息ID技术专题>系列文章的前几篇中,我们已经深切体会到消息ID在分布式IM聊天系统中的重要性以及技术实现难度,各种消息ID生成算法及实现虽然各有优势,但受制于具体的应用 ...

  10. windows平台下,web与app交互方式探索

    前言 web与app孰优孰劣暂且不争论,也许一方永远代替不了另一方.一个系统有可能同时包含web和app:web和app紧密配合下,才能给用户更好的体验.web如何将信息传达给app?这就是本文要探索 ...