题目链接

看到严格选 \(k\) 个,不难想到 WQS二分。定义 \(f(x)\) 为分成 \(x\) 段,最多有多少个超过 \(S\) 的。然后你会发现他不是凸的。因为他有很多平段,比如把两个很小的合并不改变答案。

换个方向? 考虑定义 \(f(x)\) 为有 \(x\) 个超过 \(S\) 的段,最多有多少个段。然后发现这个函数看起来是凸的,你可以先二分有 \(x\) 个超过 \(S\) 的段,然后 WQS 二分求出 \(f(x)\) 的值,复杂度 \(O(nlog^2n)\)。

但是真的要套两层二分吗?考虑把两层二分合起来。我们要求的是最小的 \(x\),满足 \(f(x)\ge k\)。先二分 \(f(x)\) 的斜率,dp时同时记录下满足段数最多的前提下 最少 有 \(p\) 个超过 \(S\) 的段,然后看一下 \(f(p)\) 的大小和 \(k\) 作比较,就把原来的外层二分去掉了。

要注意的是, \(f(x),f(x+1),f(x+2)\) 可能三点共线,所以 \(p\) 不一定是最前面的大于等于 \(k\) 的地方。最后求答案时要算的是 \(p+\lfloor(f(x)-k)/r\rfloor\),\(r\) 为二分出来的斜率。答案要对 \(k\) 取 min。

凸性的证明?

感性理解的话,每次减少的段一定是越来越大的,所以他是凸的

下面搬运官方题解。

要证明 \(2f(x+1)\ge f(x)+f(x+2)\)

首先可以发现,dp 时选的合法段一定是极短的,也就是无论删除左端点还是右端点,都会使其不合法。

设 \(f(x)\) 选择了 \(a_1\le a_2\cdots\le a_x\),\(f(x+2)\) 选择了 \(b_1\le b_2\cdots\le b_{x+2}\) 为右端点的极短合法段。设 \(a_0=b_0=0,a_{x+1}=b_{x+3}=n+1\)。一定存在 \(i\) 满足\(a_i\le b_i\le b_{i+1}\le a_{i+1}\),取 \(a_1\cdots a_{i-1},b_{i+1}\cdots b_{p+2}\) 以及 \(b_1\cdots b_i,a_i\cdots a_p\),这是 \(f(p+1)\) 的两个构造,他们加起来至少是 \(f(x)+f(x+2)\),得证。

[ARC168E] Subsegments with Large Sums的更多相关文章

  1. E. Change-free

    Student Arseny likes to plan his life for n days ahead. He visits a canteen every day and he has alr ...

  2. 《Complete Guide to Value Investing》读书总结

    大好的周末,决定写一篇读书笔记.:) 最近读了一些股票估值以及价值投资相关的文章和书籍.今天将其中的一本做一些笔记以及简单的总结. 该书名为<Complete Guide to Value In ...

  3. 每日英语:Got 5 Minutes? 'Flash Fiction' Catches On

    Chinese author Lao Ma has a simple approach to his short stories: In the face of life, everything is ...

  4. NCE3

    Lesson1  A puma at large Pumas are large, cat-like animals which are found in America. When reports ...

  5. New Concept English three(14)

    06:55:29 32w/m 45words. There was a time when the owners of shop and businesses in Chicago had to pa ...

  6. [wirtting] top01 independent

    Do you agree or disagree with the following statement? At universities and colleges, sports and soci ...

  7. Lesson2 Thirteen equals one

    ​ Lesson2 Thirteen equals one equal ['i:kwəl] v. 等于 He equaled the world record. Nobody equals him i ...

  8. A Child's History of England.14

    At first, Elfrida possessed great influence over the young King, but, as he grew older and came of a ...

  9. [翻译]MapReduce: Simplified Data Processing on Large Clusters

    MapReduce: Simplified Data Processing on Large Clusters MapReduce:面向大型集群的简化数据处理 摘要 MapReduce既是一种编程模型 ...

  10. codeforces 477A A. Dreamoon and Sums(数学)

    题目链接: A. Dreamoon and Sums time limit per test 1.5 seconds memory limit per test 256 megabytes input ...

随机推荐

  1. Feign的超时时间如何设置,我研究了4种情况

    大家好,我是三友~~ 今天来聊一聊前段时间看到的一个面试题,也是在实际项目中需要考虑的一个问题,Feign的超时时间如何设置? Feign的超时时间设置方式并不固定,它取决于Feign在项目中是如何使 ...

  2. ATtiny88初体验(二):呼吸灯

    ATtiny88初体验(二):呼吸灯 前面的"点灯"实验实现了间隔点亮/熄灭LED,但是间隔时间和亮度都没法控制,为了解决这个问题,可以使用ATtiny88的定时器模块. ATti ...

  3. 《SQLi-Labs》02. Less 6~10

    @ 目录 索引 Less-6 题解 原理 Less-7 题解 Less-8 题解 Less-9 题解 原理 Less-10 题解 sqli.开启新坑. 索引 Less-6:布尔盲注,字符型[" ...

  4. DP模拟题

    Smiling & Weeping ----寒灯纸上,梨花雨凉,我等风雪又一年 # [NOIP2007 普及组] 守望者的逃离 ## 题目背景 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深 ...

  5. 关于Unity 如何与Blazor Server结合

    关于Unity 如何与Blazor Server结合 一.介绍 最近工作中有`Unity`与`Blazor Server`结合的需求,在网上找了一圈,发现这方面的资料比较少,特此写下这篇记录一下自己的 ...

  6. 中国这么多 Java 开发者,应该诞生出生态级应用开发框架

    1.必须要有,不然就永远不会有 应用开发框架,虽然没有芯片.操作系统.数据库.编程语言这些重要.但是最终呈现在用户面前的,总是有软件部分.而软件系统开发,一般都需要应用开发框架,它是软件系统的基础性部 ...

  7. snowboy 无法 install

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple snowboy Looking in indexes: https://pypi.tun ...

  8. Vue之键盘事件

    1.使用keydown触发事件 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  9. IEDA-Maven项目开发步骤

    1. 打开IDEA 界面,选择"New Project" 2. 输入项目名称和基本信息 输入项目名称.选择存放路径.JDK版本.以及GroupId.ArtifactId. Grou ...

  10. AsyncOperation更好的实现大场景载入

    说明:为了实现场景A->大场景B,可以让场景A->等待场景C->大场景B 知识点:AsyncOperation;AsyncOperation.allowSceneActivation ...