当前位置: 首页 > news >正文

Educational Codeforces Round 175 (Rated for Div. 2) C

https://codeforces.com/problemset/problem/2070/C

核心题意解析

简单来说:

  • 我们有一条长度为 \(n\) 的纸带,初始全为红色 'R'
  • 我们最多可以选 \(k\) 个连续段,把它们涂成蓝色 'B'(涂了不能撤销)。
  • 每个格子有一个期望颜色和一个“惩罚值” \(a_i\)。如果最终颜色和期望颜色不符,就会产生 \(a_i\) 的惩罚。
  • 目标:在最多操作 \(k\) 次的前提下,让所有颜色错误的格子中,惩罚值的最大值尽可能小

最大化最小值

遇到最大化最小值基本套路就是贪心和二分,解题的时候优先往这个方向想。

Hint1:二分

直接求“最小的最大惩罚值”很难无从下手,但如果我们换个角度问自己:“假设我最高只能容忍 \(x\) 的惩罚值,我能不能在 \(k\) 步内搞定?” 这个问题就简单多了。

  • 如果 \(x\) 容忍度很高,那很容易做到。
  • 如果 \(x\) 容忍度很低,那可能 \(k\) 步根本不够用。
    这种单调性完美契合二分查找的特性。

Hint2:贪心 Check 函数的策略

假设当前的容忍极限是 \(x\),我们遍历每一个格子:

  1. 必须要涂对(\(a_i > x\):惩罚值太高了,我们承受不起它出错!
  • 如果期望是 'B':那它必须被涂蓝。
  • 如果期望是 'R':那它绝对不能被涂蓝(相当于一堵墙,强行打断当前的涂色操作)。
  1. 无所谓(\(a_i \le x\):就算错了惩罚值也没超过 \(x\),所以它变成什么颜色我们根本不关心。顺其自然即可(能省操作就省操作)。

贪心策略:从左到右遍历,遇到“必须是蓝色”的格子且当前没在涂色,就消耗 1 次操作开启一个新的涂色段;遇到“必须是红色”的格子,就强行结束当前涂色段;遇到“无所谓”的格子,保持当前状态直接跳过。最后看总操作数是否 \(\le k\)


最终代码

点击查看代码
//
// Created by awake on 2026/5/14.
//
#include <bits/stdc++.h>
using namespace std;// clang-format off
struct { auto operator()(auto &i) { cin >> i; } } IN; // NOLINT
struct { auto operator()(auto &i) { cout << i << ' '; } } OUT; // NOLINT
// clang-format on
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr)// NOLINT
using ll = long long;       //NOLINT
template <typename T>
using vec = vector<T>; //NOLINT
#define int long long
#define endl '\n'void solve()
{int n, k;cin >> n >> k;string s;cin >> s;vec<int> a(n);ranges::for_each(a, IN);auto check = [&](int x){int cnt = 0;bool blue = false;for (int i = 0; i < n; i++){if (a[i] > x){if (s[i] == 'B'){if (!blue){cnt++;blue = true;}}elseblue = false;}}return cnt > k;};int l = 0, r = 1e9 + 1;auto ran = views::iota(l, r);auto ans = *ranges::partition_point(ran, check);cout << ans << endl;
}signed main()
{IOS;int T;cin >> T;while (T--)solve();return 0;
}
http://www.jsqmd.com/news/835378/

相关文章:

  • 破解过流继电器校验低效难题:3P现场精准校验方法论如何保障机组安全? - 速递信息
  • 2026年国产雨鞋品牌推荐:不同场景高口碑高性价比雨鞋测评 - 速递信息
  • C++函数式宏的使用注意事项
  • 北京钢筋混凝土检查井厂家实测排行:多维度客观对比 - 奔跑123
  • 《数据基础设施 区域/行业功能节点技术要求》(TC609-6-2025-11)标准规范深度解读
  • 宁波黄金变现流程全记录:从准备到成交,步步为营避坑指南 - 生活测评君
  • 面向程序设计——发布作业集1~3的总结性Blog
  • 2026宁波黄金回收实测:我跑了3家店,终于找到靠谱的 - 生活测评君
  • Postman 测试 API 鉴权成功但代码请求 403 禁止访问为什么?
  • 2026年|论文查重2%但AI率爆表?全网最全降AI率保姆级指南 - 降AI实验室
  • 豫章师范学院就业优势全景报告:数据支撑、产教融合、多元发展 - 寻茫精选
  • 北京钢筋混凝土蓄水池厂家实力排行:品质与服务对标 - 奔跑123
  • 呼和浩特仓库货架选购指南:从市场格局到厂家深度解析 - 品牌推广大师
  • 质量工具学习指南:从理论到落地的转化方法 - 众智商学院职业教育
  • 如何使用 netstat 命令排查服务器是否存在异常对外连接端口?
  • MewUI 项目:面向 NativeAOT 的超轻量级.NET GUI 架构、底层图形管线与性能演进
  • 微信立减金别放过期!回收变现就用了这一招 - 京顺回收
  • 在多渠道的现在,如何把自己的各方订阅接成个人中转?
  • 以后工程师的价值看会不会省token?用文言文更省token?文科生的AI暴论给我看笑了
  • 2026年亲测有效!论文AI率从92%降至16%的实操教程:免费通用工具+3个专业神器(附神级指令) - 降AI实验室
  • 2026昆明婚纱照新人真实反馈 | 300对新人调研+9家精选机构口碑全公开 - 生活测评君
  • 昆明拍婚纱照选哪家?双强+8家竞品全维度对比,不花冤枉钱 - 天天生活分享日志
  • [langgraph] Build Agent
  • STM32 W5500 DNS
  • 实验九
  • 上海专业膝关节置换医院排行:精准诊疗实力盘点 - 奔跑123
  • 2026昆明婚纱摄影行业白皮书 | 权威数据发布+10家品牌深度评测 - 天天生活分享日志
  • 第一次blog
  • PrismAgent:基于零样本可解释多智能体框架的模因危害性挖掘
  • 上海信誉良好的髋关节置换医院选择指南:资深视角解析 - 奔跑123