尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

CF1832D2 Red-Blue Operations (Hard Version)  模拟赛题目分析
📅 发布时间:2026/6/19 9:16:35

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;
}

相关新闻

  • 详细介绍:cpolar让Nastool影音库随身而行,随时随地享受视听自由
  • 烧录神器来了!量产工具使用教程,新手也能秒懂
  • 深入解析:C++基础(21)——内存管理

最新新闻

  • 大连家电维修平台推荐:本地用户实测较好的几家服务商深度对比——2026年6月最新发布 - 一步到家
  • 3步解锁老旧Mac新生命:OpenCore Legacy Patcher终极升级指南
  • 2026宜昌非急救转运救护车TOP5盘点|宜荆荆同城、长江跨江、三峡山地、院区转诊首选康跃转运 - 吉修匠
  • 2026年湖北百合种植基地推荐排行榜:百合技术/百合回收/百合种苗案例参考 - 新闻快传
  • 告别龟速与超时:全方位解决 git clone 网络难题的实战指南
  • 嵌入式MCU电气特性与FLASH操作深度解析:从数据手册到稳定设计

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号