AT_arc168_e [ARC168E] Subsegments with Large Sums 题解

news/2025/3/26 18:40:52/文章来源:https://www.cnblogs.com/allforgod/p/18790218

题意:

\[\begin{aligned}&\text{给定长度为 } n \text{ 的数列 } \{a_i\} \text{ 和两个参数 } k, s \text{,将 } \{a_i\} \text{ 划分为 } k \text{ 段,最大化和} \geq s \text{ 的段数。} \\ &k\le n\le 2.5e5 \end{aligned} \]

思路

有划分为恰好 \(k\) 段的限制,我们可以考虑wqs二分。发现直接将答案作为 \(y\) 轴是没有单调性的,因此只能换一下。

发现由于我们要让有贡献的段数尽量大,因此要让没有贡献的段长尽量小,因此没有贡献的段长直接设为1。
然后就又发现我们要让有贡献的段数尽量大,也要让有贡献的段长尽量小。

因此我们设 \(f(x)\) 为总贡献为 \(x\) 时有贡献的段的总长度。然后发现当可以划分的合法序列的段数大于 \(k\) 的时候,一定可以通过某种合并方式使得这个序列的划分的段数变为 \(k\) 同时仍然合法。

因此对于一个序列,其合法的限制条件就是 \(k\le x+n-f(x)\),即 \(\sum{r-l}\le n-k\)
然后就将 \(sum{r-l}\) 作为 \(y\) 轴,二分的总贡献 \(x\) 作为 \(x\) 轴,直接wqs二分即可。

code

需要注意同样需要特殊判定多个点在同一条直线上的情况。

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=3e6+7;
int n,K,s,a[N],sum[N],pre[N];
pair <int,int> f[N];
bool check(int k){for(int i=1;i<=n;i++){f[i]=f[i-1];if(pre[i]>=1) f[i]=min(f[i],{f[pre[i]-1].first+i-pre[i]-k,f[pre[i]-1].second+1});}return (f[n].first+f[n].second*k<=n-K);
}
signed main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>n>>K>>s;for(int i=1;i<=n;i++) cin>>a[i],sum[i]=sum[i-1]+a[i];for(int i=1,loc=0;i<=n;i++) {while(sum[i]-sum[loc-1]>=s) loc++;pre[i]=loc-1;}int l=1,r=n,ansk=l;while(l<=r){int mid=(l+r)>>1;if(check(mid)) ansk=mid,l=mid+1;else r=mid-1;}int eee=check(ansk),x=min(f[n].second,K),y=f[n].first+f[n].second*ansk;while(y+ansk<=n-K&&x<K) x++,y+=ansk;cout<<x;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/904982.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3.24 学习记录

实现了学习记录APP的登录注册功能

2025西安交大集训Day2:DFS,BFS记忆化搜索,迭代加深搜索,二分搜索

2025西安交大集训Day2:DFS,BFS记忆化搜索,迭代加深搜索,二分搜索

掌握 Postman:高级 GET 请求技术与响应分析

欢迎阅读本指南,它将详细介绍如何在 Postman 中发送 GET 请求并理解 API 响应。对于希望提升 API 测试和开发能力的开发者来说,这是不可或缺的技能。 Postman 对开发者的重要性Postman 是 API 开发和测试中不可或缺的工具。它不仅简化了发送请求和分析响应的过程,还提供了一…

带你一起来熟悉linux文件权限体系

了解 Linux 文件权限对于有效且可靠的linux相关系统管理和安全管理至关重要。通过本文中概述的概念并加以实践,您将可以轻松浏览文件权限并确保 Linux 系统的完整,可靠和安全。下面将从权限的格式,常用设置,修改,解析等方面分别说明。 A).Linux 文件权限由三个权限部分组成…

OP100自动安装背板常见问题

1.运行过程中切手动,回原灯一直闪烁,始终无法执行完成 OP50自动安装座板 OP100自动安装背板 OP280自动安装上盖 这几个工站因为有记忆功能,会记住当前步序以及夹爪/吸盘上有没有物体,如果运行中切换手动,并动了气缸,会导致逻辑错乱,类似升降器的SUB40,遇到这种情况: 1…

20244217 2024-2025-2 《Python程序设计》实验一报告

学号 2024-2025-2 《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2442 姓名: 胡峻豪 学号:20244217 实验教师:王志强 实验日期:2025年3月24日 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境。首先在官网下载并安装PyCharm专业版,安装完成后打开软…

软件工程日报15

Android studio 实现连接远程mysql数据库,并将数据展示出来,由于之前没接触过,全靠按照博客上的指导和ai生成的代码,之后在学习一下 以下是效果

《Python程序设计》实验一报告

课程:《Python程序设计》 班级: 2441 姓名: 王晓凤 学号:20244127 实验教师:王志强 实验日期:2025年3月24日 必修/选修: 公选课 一.实验内容 1.熟悉Python开发环境:本次实验使用了PyCharm。首先在官网下载并安装PyCharm社区版,安装完成后打开软件,创建一个新的Pytho…

抽象bug:mybatis-xml配置错误(configuration and configLocation can not specified with together)

mybatis-xml配置错误(configuration and configLocation can not specified with together) 操作 我在使用mybatis-XML映射配置时,没有将mappper的xml文件放在同名同包的路径下,而是使用辅助配置,在配置文件中设置XML路径.然而,在配置文件后,没有成功,一直报错. 错误信息:"…

关于pytorch中直接调用对象

基于之前有C++基础,对于python中的一些函数的用法总会有些疑问。 例如,为什么python可以直接调用对象,而不是调用对象里的函数呢? 以下为包含__call__函数的类的调用 除此之外, 在PyTorch 中,所有继承自 nn.Module 的类都继承了一个特殊的 call() 方法。 # 使用ToTensor创…

事务注解@Transactional

目录 1、属性介绍 2、传播机制准备例子总结3、原理 4、失效场景 一、属性介绍 1、isolation 属性 事务的隔离级别,默认值为 Isolation.DEFAULT。可选的值有:Isolation.DEFAULT:使用底层数据库默认的隔离级别Isolation.READ_UNCOMMITTED:读取未提交数据(会出现脏读,不可重…