YNOI 智慧题

EasyVer1 [Ynoi Easy Round 2015] 世上最幸福的女孩

EasyVer2 小白逛公园

先看 EasyVer2

单点修改 区间查询最大子段和

考虑在线段树维护 前缀max后缀maxsum,和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. RocketMQ系列3:核心技术介绍

    1 介绍 RocketMQ是一款分布式消息中间件,其核心技术涉及多个核心概念,包括主题.队列.消息.生产者.消费者.消费者分组以及订阅关系.以下是对这些核心技术的详细说明: 2 核心技术实现 2.1 ...

  2. 对 .NET 开发者来说,Azure AD 改名为 Microsoft Entra ID 意味着什么?

    对 .NET 开发者来说,Azure AD 改名为 Microsoft Entra ID 意味着什么? 原文地址:https://devblogs.microsoft.com/dotnet/azure ...

  3. 【数据库】MongoDB服务启动失败的问题。

    1.确保MongoDB所在文件夹拥有所有权限 2.确保打开CMD窗口是以管理员身份运行的 3.配置文件中的路径应该为完整路径,且不包含空格和特殊字符(不建议包含) systemLog: destina ...

  4. 内华达大地测量实验室GNSS数据tenv3格式下载

    GNSS时序形变位移数据下载 引言 下载方式 注意事项 引言 目的:教大家如何下载GNSS时序形变位移数据,本人主要是利用GNSS位移结果进行InSAR相关成果的精度验证工作.若大家需要在自己的研究领 ...

  5. 按部就班--从零开始建设k8s监控(二)

    前言 书接上文,prometheus已经安装好了,并且能够对k8s的整体状态进行监控,但是我们还需要更多 环境准备 组件 版本 操作系统 Ubuntu 22.04.4 LTS docker 24.0. ...

  6. 关于vue加element-ui上传文件获取文件的sha256的值

    首先使用element的上传文件的组件 安装依赖crypto-js npm i crypto-js <el-upload class="upload-demo" drag : ...

  7. 2024-12-28 AI智能体日报

  8. k8s~控制deamonset中pod的数量

    DaemonSet 是 Kubernetes 中的一种控制器,用于确保集群中的每个节点(或特定标签选择器匹配的节点)运行一个 Pod 的副本.DaemonSet 通常用于运行集群守护进程,如日志收集. ...

  9. 原生js元素拖动效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. ctfshow--web2 sql注入

    这题是考sql注入,我们先用个万能语句注入 发现它上面会出现 欢迎你,ctfshow 那么这就很明显了,这个用户的名字就是ctfshow 那么猜测flag会不会是在flag的用户里面呢我们提交一下 如 ...