CF1832D2 Red-Blue Operations (Hard Version) 模拟赛题目分析

news/2025/10/9 19:04:26/文章来源:https://www.cnblogs.com/high-sky/p/19131779

CF1832D2 Red-Blue Operations (Hard Version)

题目概述

给你 \(\{a_n\}\),第 \(i\) 次操作,如果是你第奇数次操作当前位置则令它 \(+i\) 否则 \(-i\)

给出 \(q\) 个询问,问你进行完 \(k\) 个操作之后 \(a\) 中的最小值最大是多少?

题目分析

这道题目一眼二分答案。

先对 \(a\) 排序。

观察题目性质(经典):

  • 对于当前位置 \(x\),如果我在 \(i\) 的时候操作了一次,那么我下一次一定会操作它,这样会使得代价最小(只减少 \(1\))。

因为我们考虑的是二分答案,所以说只需要确定对于每一个 \((k,val)\) 去检查 \(k\) 步能不能实现全部都大于等于 \(val\)

首先确定 \(k\) 的下界。

对于第 \(i\) 个数,我们想要将它变到大于等于 \(x\),于是有:

\[a_i+k-i+1\geq x \]

移项得到:

\[k\geq c+(i-1-a_i) \]

为什么呢,因为我肯定是对于小的那个给予最大的关怀。

取前缀最大值即可。

这个我门直接找 \(<val\) 即可。

\(k=2w+p\),我们假设后面用 \(p\) 次加,那么显然,这 \(p\) 个可以加进去,这个我们可以假定 \(p\)\(<val\) 的个数,然后如果奇偶性不同,则让 \(p+1\) 即可。

如果说 \(k\) 比下界小,那就不行,如果说 \(p\) 进行 \(+1\) 之后若 \(>n\) 就不行,因为此时判的情况就是 \(p=n\) 时但奇偶性不同所以说就会再减了一次。

还需要判断 \(k\) 的上界。

显然只需要满足:

\[sum-n\times val+(k+k-1+\dots+k-p+1)>w \]

其意义时总和减去下面都有的部分,再加上一开始加的部分,这些部分就是我要可能减去的部分,如果这个部分不够减,那不好意思,就不行。

然后就能 AC 了。

代码

时间复杂度 \(\mathcal{O}(q\log V\log n)\)

#include <iostream>
#include <cstdio>
#include <cstring>
#include <stdlib.h>
#include <algorithm>
#include <vector>
#define int long long
#define N 200005
using namespace std;
int n,q,sum;
int a[N],lim[N];
bool check(int k,int c) {int p = lower_bound(a + 1,a + n + 1,c) - a - 1;if (p == 0) return true;if (k < p) return false;if ((k - p) & 1) p ++;if (p > n) return false;if (k < c + lim[p]) return false;if (sum * 2 - n * c * 2 + p * (2 * k - p + 1) >= k - p) return true;return false;
}
signed main(){cin >> n >> q;for (int i = 1;i <= n;i ++) scanf("%lld",&a[i]),sum += a[i];stable_sort(a + 1,a + 1 + n);for (int i = 1;i <= n;i ++) lim[i] = i - a[i] - 1;for (int i = 2;i <= n;i ++) lim[i] = max(lim[i],lim[i - 1]);for (int i = 1;i <= q;i ++) {int k;scanf("%lld",&k);int l = 0,r = 1e18,res = 0;while(l <= r) {int mid = l + r >> 1;if (check(k,mid)) res = mid,l = mid + 1;else r = mid - 1;}printf("%lld ",res);}return 0;
}

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

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

相关文章

PostgreSQL pg_auto_failover 高可用 1:pg_auto_failover集群搭建

PostgreSQL pg_auto_failover 高可用 1:pg_auto_failover集群搭建 0,pg_auto_failover架构 开始之前,先看一下pg_auto_failover的一个最基础架构原理如下,需要弄清楚几个节点的作用 1,monitor节点纯粹是一个监控…

详细介绍:cpolar让Nastool影音库随身而行,随时随地享受视听自由

详细介绍:cpolar让Nastool影音库随身而行,随时随地享受视听自由pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…

网络流最小割,无向图建图法,求最小割点转换求最小割边

洛谷P1345 假设原来的点编号为i,总共有n个点,那么我们就把每个点拆成两个点,编号分别为i和i+n。其中点i负责连接原图中连入这个点的边,点i+n负责连原图中连出这个点的边。 add ( i, i+n, 1 ) ; add ( i+n, i, 0 )…

2025/10/9

2025/10/9学习算法 学习数据结构 写题

看论文随笔Incendio: Priority-Based Scheduling for Alleviating Cold Start in Serverless Computing

基于优先级的无服务器计算冷启动调度 首先摘要: 说明,在无服务器中,冷启动会导致较长的响应延迟。 解决方法是通过减少冷启动的次数来缓解。 然而,现实中,最小冷启动次数并不等于最小响应延迟,根本原因是通过冷启…

深度学习概述 - -一叶知秋

深度学习概述复杂模型 S曲线S曲线改变参数加入更多的Features 例子 1、搭建模型 括号里的作用就是得出 r蚂蚁线内的作用是将 r 通过sigmoid函数,得出 a一个简单的写法最后都乘以 c 加到一起在加 b 得出 y线性代数表示…

C++新语法学习笔记(更新我不会写的新语法)

C++新语法学习笔记(更新我不会写的新语法)顺序填充数组:iota,在头文件numeric中 iota(.begin(), .end(), 参数);//从参数开始填充:参数,参数+1

烧录神器来了!量产工具使用教程,新手也能秒懂

想提升烧录效率?这个量产烧录工具简直是神器!下面为你带来详细上手教程,零基础也能快速掌握,实用干货,免费分享! 本文以Air780EPM开发板为例,演示量产烧录工具的使用步骤。 最新量产烧录工具使用指南详见: htt…

深入解析:C++基础(21)——内存管理

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

C#性能优化基础:内存诊断(dump)

接上一篇:C#性能优化基础:垃圾回收机制本文说下怎么去查找内存问题,举个例子,我们有这样的一段程序:namespace ConsoleApp1{internal class Program{static List<Demo> Demos { get; } = new List<Demo&…

2025年企业级LLM内容安全防护指南:鉴冰AI FENCE流式网关技术深度解析

2025年企业级LLM内容安全防护指南:鉴冰AI FENCE流式网关技术深度解析随着生成式AI在企业关键业务中的深度应用,LLM输出违规内容防护已从技术选项升级为合规刚需。AI-FOCUS团队推出的鉴冰AI FENCE(AI安全围栏)采用流…

完整教程:FPGA学习笔记——图像处理之亮度调节(Gamma)

完整教程:FPGA学习笔记——图像处理之亮度调节(Gamma)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas…

Kubernetes Ingress:管理集群外部访问的入口网关

在k8s之服务Service章节,我们详细的介绍了Service的组成以及相关的原理。Service可以将自身的服务暴露出去,给集群内部服务或者给外部服务去使用,或者将外部服务分装为一个service,供给集群内部服务使用。而今天介…

搜索选讲

前言 我太菜了,如有没写清楚的地方大家轻喷. 爆搜 P4467 k短路 Hint:沿用次短路的思路(P1491). 不能经过重复的点是一个很强的限制,直接搜无论怎么剪枝都会被卡爆. 由于没有负权边,最短路必然不会经过重复的点,…

深入解析:在Linux中部署tomcat

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

vue打包的项目,从根目录进去路由可访问,浏览器直接打开这个路由不可访问

Vue 项目路由访问问题分析 您描述的问题是 Vue 打包后的项目在直接访问子路由时出现 404 错误,而从首页导航可以正常访问。这是一个常见的 Vue 路由配置问题。 问题原因 这是因为您使用的是 Vue Router 的 history 模…

深入解析:Docker容器化部署简要指南

深入解析:Docker容器化部署简要指南2025-10-09 18:29 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !im…

IObit Uninstaller一款强大的卸载工具!IObit Uninstaller卸载工具,IObit Uninstaller下载安装教程

软件介绍 IObit Uninstaller 是一款强大且实用的卸载工具。它能有效替代 Windows 自带卸载功能,,不残留相关文件与注册表信息,防止因残留导致系统变慢或出错。软件支持多种卸载方式,常规卸载适用于大多数程序;批量…

网络配置不再难:4G/Wi-Fi/以太网/虚拟网卡全指南

多种网络接口并存的时代,掌握4G、Wi-Fi、以太网和虚拟网卡的配置是必备技能。本文系统讲解各类连接方式的设置方法,助你轻松应对复杂网络场景。 网络适配器,它的一个更广为人知的名字是——网卡。 在应用开发中我们…

2025开关按钮厂家最新推荐榜:开关按钮,带灯开关按钮,防水开关按钮,防爆开关按钮,防腐开关按钮等全种类覆盖,高品质设计与卓越性能口碑之选

在当今科技飞速发展的时代,开关按钮作为各种电子设备、电气系统中不可或缺的基础元件,其重要性不言而喻。无论是工业自动化生产线上的精密控制设备,还是日常生活中的家用电器,开关按钮都在默默地发挥着关键作用。随…