首页 > 其他分享 >[ARC168E] Subsegments with Large Sums

[ARC168E] Subsegments with Large Sums

时间:2023-11-25 13:33:51浏览次数:35  
标签:二分 极短 Subsegments Sums 合法 Large 端点 一段 sim

有点意思的简单题。

答案有可二分性。合并两段,显然仍然合法。

考虑如何 check。因为答案可以被二分,我们尝试求恰好 \(x\) 段就行了。

恰好,这是 wqs 二分的内容。如何设计一个与 \(x\) 有关的凸函数呢?

这个函数大概是 \(\sum_{i=1}^x w(l_i, r_i)\) 的形式,每一个 \([l, r]\) 都是合法的一段,且互相不重叠。这样就能记录段数了,也就可以为每一段附加权值了。

假如分成了 \(x\) 段,只需要这 \(x\) 段的长度和 \(\leq n-(k-x)\) 就行了。但是这样不行,因为右侧与 \(x\) 有关,这样需要对每个 \(x\) 求值。移项,变成每一段的长度减去一不超过 \(n-k\),这就把状态变成了 \(O(n)\) 个。

因此 \(w(l, r) = r - l\),合法等价于 \(\sum w(l, r) \leq n-k\),要求每一段 \([l, r]\) 都合法。

设 \(f(x)\) 为:划分出 \(x\) 个合法段 \([l_i, r_i]\),\(w(l_i, r_i)\) 之和。下面搬运官方题解对这个函数具有凸性的证明。(它是一个下凸壳,因为取一段的代价是越来越高的。)

假设 \(B_1 \sim B_m\) 是 \(m\) 个极短合法段。因为极短,两两不具有包含关系。因此我们假定这 \(m\) 段右端点、左端点均递增。

设 \(f(p)\) 对应的方案的极短合法段的编号是 \(x_1 \sim x_{p}\),\(f(p+2)\) 对应的方案的极短合法段的编号是 \(y_1 \sim y_{p+2}\)。先延长每一段左端点让它们两两相接,假设没有一个 \(y\) 被完整包含到 \(x\) 中,\(y\) 最多只能有 \(p+1\) 个,矛盾。因此设 \(y_{i+1}\) 被包含于 \(x_i\) 中,取 \(x_1 \sim x_{i-1}, y_{i+1} \sim y_{p+2}\) 和 \(x_1 \sim y_i, x_i \sim x_{p}\) 构成两个长度为 \(p+1\) 的合法解,因此有 \(2f(p+1) \leq f(p) + f(p+2)\),凸性得证。

(延长左端点前的图,可以证明延长后存在一个 \(y_{i}\) 被包含于 \(x_i\) 中,\(y_i\) 与 \(y_{i+1}\) 不一定相接,但这不影响。)

因此,我们得到了一个 \(O(n \log^2 n)\) 的做法,代码

  • 二分是否分为恰好 \(x\) 段是可以的。注意这里的上界是 \(k\)。
  • 设 \(f(x)\) 为:分成恰好 \(x\) 段的 \(\sum w(l, r)\) 的最小值。这是一个下凸壳,因此对其进行 wqs 二分找到 \(f(x)\)。如果这个最小值不超过 \(n-k\) 就认为可以分成 \(x\) 段。

对于 \((x, f(x))\) 组成的下凸壳,第二个二分对其单点求值。但是,因为我们只能用一条斜线切凸包并得到切到的点的坐标,在求一个点的坐标时获得了额外的其它点的坐标。能不能只做一次二分呢?

注意到我们需要的是 \(y\) 坐标不超过 \(n-k\) 的点的横坐标的最大值,当切线的斜率单调变化时,切到的点是否合法也是单调的,因此直接二分切线的斜率就够了。

因此我们得到了一个 \(O(n \log n)\) 做法,代码(官方代码)

标签:二分,极短,Subsegments,Sums,合法,Large,端点,一段,sim
From: https://www.cnblogs.com/purplevine/p/solution-arc168e.html

相关文章

  • Unity异常提示 Invalid worldAABB. Object is too large or too far away from the or
    Unity在编辑器退出EditMode进入PlayMode之前,调用了一次Start和Update,然后提供了空的数据。这个时候容易造成除以0的情况,但是Unity没有立刻抛出异常,而是继续执行,生成了一个无穷大的数值。......
  • 学习笔记:A Survey on Large Language Model basedAutonomous Agents
    挑选了自己感兴趣的部分整理了一下。目录ASurveyonLargeLanguageModelbasedAutonomousAgents1LLM-AAConstruction1.1ArchitectureDesign2LLM-AAApplication3LLM-AAEvaluation4ChallengeASurveyonLargeLanguageModelbasedAutonomousAgents北大高林学院的......
  • SPOJ1805 HISTOGRA - Largest Rectangle in a Histogram 题解
    LinkSPOJ1805HISTOGRA-LargestRectangleinaHistogramQuestion在一条水平线上有\(n\)个高为\(a_i\)的矩形,求包含于这些矩形的最大子矩形面积。Solution我们定义\(L_i\)表示有\(a_i\)这个高度的一根悬线,往左最多能平移到什么位置初始化显然,\(a_i=i\)考虑转移......
  • 什么是前端应用开发的 LCP(Largest Contentful Paint) 指标
    在网页性能优化的领域里,LCP(LargestContentfulPaint,最大内容绘制)是一个非常重要的性能指标。它测量的是从页面开始加载到页面的"主要内容"完全呈现在屏幕上所需的时间。换句话说,LCP是测量用户何时看到页面的"主要内容"的指标。在理解LCP之前,我们需要知道一个概念,那就是......
  • 论文阅读:Efficient 3D Point Cloud Feature Learning for Large-Scale Place Recognit
    Efficient3DPointCloudFeatureLearningfor Large-ScalePlaceRecognition用于大规模场所识别的高效三维点云特征学习摘要由于变化环境中场景的外观和照度的急剧变化,基于点云的地点识别检索仍然是一个具有挑战性的问题。现有的基于深度学习的全局描述符的检索任务通常会消耗......
  • TALLRec: An Effective and Efficient Tuning Framework to Align Large Language Mod
    目录概TallRec代码BaoK.,ZhangJ.,ZhangY.,WangW.,FengF.andHeX.TALLRec:Aneffectiveandefficienttuningframeworktoalignlargelanguagemodelwithrecommendation,2023.概LoRA微调在推荐上的初步尝试.TallRecTallRec实际上就是一种特殊的指令......
  • OpenAI大动作:Whisper large-v3重塑语音识别技术
    在最近的OpenAI首届开发者大会上,一个引人注目的技术亮点是Whisperlarge-v3的发布。这款最新的自动语音识别模型不仅在多语言识别方面取得了显著进步,而且还将很快在OpenAI的API中得到支持。今天,我们就来深入了解这个技术突破,并探讨它如何改变我们与机器的交流方式。Whisperlarge-v......
  • 207-nginx 或者tomcat报错:413 Request Entity Too Large
    http{#...client_max_body_size20M;#设置最大允许大小为20MB#...}tomcat413RequestEntityTooLarge<Connectorport="8080"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort=&quo......
  • P1466 [USACO2.2] 集合 Subset Sums
    P1466USACO2.2集合SubsetSums毫无思路如果不告诉我这题是DP题,我一定会爆搜。看了题解,很妙。居然也能套背包板子。定义F[i][j]为在前\(i\)个数中选择一些数其和为\(j\)的方案总数。显然转移方程F[i][j]=F[i-1][j]+F[i-1][j-i]要么不选当前第\(i\)个数,要么选......
  • WCF restful 上传文件 返回413 request entity too large
    网上各种加binding都不行最后找到了在配置文件中加 webHttpBinding1<system.serviceModel>2<bindings>3<webHttpBinding>4<binding5maxBufferPoolSize="2048576000"6......