尧图网络科技 Logo 尧图网络科技
  • 首页
  • 关于我们
  • 建站服务
  • UI 设计
  • 案例展示
  • SEO 优化
  • 资讯中心
  • 联系我们

资讯详情

深度解读 · 专业分析

  • 首页
  • 资讯中心
  • /
  • ABC430

最新资讯

  • 全部资讯
  • 行业动态
  • UI 设计
  • SEO 优化
  • 网站开发

ABC430

📅 发布时间:2026/6/19 3:11:02 👁 浏览次数:
ABC430

ABC430

C. Truck Driver

二分或双指针
固定区间左端点 \(l\),找到区间中至少有 \(A\) 个 a 的最小右端点 \(r_a\),以及区间中至少有 \(B\) 个 \(b\) 的最小右端点 \(r_b\)。显然条件二更紧,所以用 \(r_b-r_a\) 来更新答案即可。
注意,\(r_b\) 可能在 \(r_a\) 的左边。

代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)using namespace std;
using ll = long long;int main() {int n, a, b;string s;cin >> n >> a >> b >> s;vector<int> sa(n+1), sb(n+1);rep(i, n) {if (s[i] == 'a') sa[i+1] = 1; else sb[i+1] = 1; }rep(i, n) sa[i+1] += sa[i];rep(i, n) sb[i+1] += sb[i];ll ans = 0;rep(l, n) {int ra, rb;{int wa = l, ac = n+1;while (abs(ac-wa) > 1) {int wj = (ac+wa)/2;if (sa[wj] - sa[l] >= a) ac = wj; else wa = wj;}ra = ac;}{int ac = l, wa = n+1;while (abs(ac-wa) > 1) {int wj = (ac+wa)/2;if (sb[wj] - sb[l] < b) ac = wj; else wa = wj;}rb = wa;}ans += max(0, rb-ra);}cout << ans << '\n';return 0;
}

D. Neighbor Distance

用一个 std::set 按位置维护当前出现的点 \((X_i, i)\),并且维护每个已出现点的“到最近人的距离” dist[i],和这些距离之和 ans。每插入一个新点,只会影响新点与它左右直接相邻的点,按增量更新即可 —— 因此每次插入 \(O(\log n)\)。

代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)using namespace std;
using ll = long long;
using P = pair<int, int>;int main() {int n;cin >> n;ll ans = 0;vector<int> dist(n+2);set<P> st;st.emplace(0, 0);st.emplace(2e9, n+1);dist[0] = 2e9; ans += 2e9;auto upd = [&](int i, int d) {ans -= dist[i];dist[i] = min(dist[i], d);ans += dist[i];};for (int i = 1; i <= n; ++i) {int x;cin >> x;auto it = st.emplace(x, i).first;int dprev = x - prev(it)->first;int dnext = next(it)->first - x;dist[i] = min(dprev, dnext);ans += dist[i];int pi = prev(it)->second;int ni = next(it)->second;upd(pi, dprev);upd(ni, dnext);cout << ans << '\n';}return 0;
}

E. Shift String

找 \(B\) 在 \(A+A\) 中第一次出现的起始下标
具体实现可以用哈希,\(Z\) 算法或 \(\text{kmp}\)

代码实现
#include <bits/stdc++.h>
#include <atcoder/all>
using namespace atcoder;
#define rep(i, n) for (int i = 0; i < (n); ++i)using namespace std;void solve() {string a, b;cin >> a >> b;int n = a.size();vector<int> z = z_algorithm(b+"s"+a+a);rep(i, n) {if (z[n+1+i] == n) {cout << i << '\n';return;}}puts("-1");
}int main() {int t;cin >> t;while (t--) solve();return 0;
}

F. Back and Forth Filling

对每一个数,计算它最早能放到的格子和最晚能放到的格子,于是这个数能占据的格子的区间是一个闭区间 [最早, 最晚]。然后用差分就能求出每个格子中能填多少种数了。
先预处理出 \(4\) 个数组:

  • ll[i]:表示 \(i\) 左边紧跟着的连续的 L 的个数
  • lr[i]:表示 \(i\) 左边紧跟着的连续的 R 的个数
  • rl[i]:表示从 \(i\) 开始向右的连续的 L 的个数
  • rr[i]:表示从 \(i\) 开始向右的连续的 R 的个数

最早 \(= \text{lr}[i]+\text{rl}[i]\),有连续的 \(\text{ll}[i]+\text{rr}[i]\) 个数要填在 \(i\) 的左边
最晚 \(= N-1-(\text{ll}[i]+\text{rr}[i])\),有连续的 \(\text{ll}[i]+\text{rr}[i]\) 个数要填在 \(i\) 的右边

代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)using namespace std;void solve() {int n;string s;cin >> n >> s;vector<int> ll(n), lr(n);vector<int> rl(n), rr(n);rep(i, n-1) if (s[i] == 'L') ll[i+1] = ll[i]+1;rep(i, n-1) if (s[i] == 'R') lr[i+1] = lr[i]+1;for (int i = n-2; i >= 0; --i) {if (s[i] == 'L') rl[i] = rl[i+1]+1; else rr[i] = rr[i+1]+1;}vector<int> d(n+1);rep(i, n) {int s = lr[i]+rl[i], t = ll[i]+rr[i];d[s]++; d[n-t]--;}rep(i, n) d[i+1] += d[i];rep(i, n) cout << d[i] << " \n"[i == n-1];
}int main() {int t;cin >> t;while (t--) solve();return 0;
}

G. Range Set Modifying Query

线段树beats

相关新闻

自定义Linux 备份命令 backup 【from claude.ai Haiku 4.5】

自定义Linux 备份命令 backup 【from claude.ai Haiku 4.5】

2026/6/15 9:39:33 查看详情
打造你自己的 Linux 备份命令:快速、高效、易用 【from claude.ai Haiku 4.5】

打造你自己的 Linux 备份命令:快速、高效、易用 【from claude.ai Haiku 4.5】

2026/6/15 10:38:08 查看详情
CVE-2025-12176漏洞分析:未记录的管理账户安全风险

CVE-2025-12176漏洞分析:未记录的管理账户安全风险

2026/6/15 10:34:41 查看详情
探索光的奥秘:Ray Optics - 浏览器中的专业光学仿真工具

探索光的奥秘:Ray Optics - 浏览器中的专业光学仿真工具

2026/6/19 3:08:05 查看详情
硬件调试接口14EBDI:Motorola MCU的底层调试利器

硬件调试接口14EBDI:Motorola MCU的底层调试利器

2026/6/19 3:08:05 查看详情
2026年现阶段,如何选择北海卧室床头画专卖店?这份选购指南请收好 - 品牌鉴赏官2026

2026年现阶段,如何选择北海卧室床头画专卖店?这份选购指南请收好 - 品牌鉴赏官2026

2026/6/19 3:08:05 查看详情
OCAT黑苹果配置神器:5分钟告别复杂命令行,新手也能轻松搞定OpenCore!

OCAT黑苹果配置神器:5分钟告别复杂命令行,新手也能轻松搞定OpenCore!

2026/6/19 3:05:53 查看详情
Effective C++ 条款53:不要轻忽编译器的警告

Effective C++ 条款53:不要轻忽编译器的警告

2026/6/19 3:03:44 查看详情
MC68HC16Y3/916Y3 ADC模块深度解析:从逐次逼近原理到工业应用实战

MC68HC16Y3/916Y3 ADC模块深度解析:从逐次逼近原理到工业应用实战

2026/6/19 3:03:44 查看详情
行星盘动力学与分子谱线诊断技术解析

行星盘动力学与分子谱线诊断技术解析

2026/6/19 0:01:24 查看详情
2026年成都GEO优化机构怎么选?全维度实用指南 - 刘向阳而生

2026年成都GEO优化机构怎么选?全维度实用指南 - 刘向阳而生

2026/6/19 0:01:39 查看详情
Akagi终极指南:5分钟掌握智能麻将AI助手的完整使用教程

Akagi终极指南:5分钟掌握智能麻将AI助手的完整使用教程

2026/6/19 0:01:39 查看详情
从Landsat到高分系列:手把手教你选择适合自己项目的遥感卫星数据

从Landsat到高分系列:手把手教你选择适合自己项目的遥感卫星数据

2026/6/18 19:44:15 查看详情
福州空调维修上门加氟移机空调不制冷、推荐本地老牌鑫盛达、冷顺安 - 我叫一

福州空调维修上门加氟移机空调不制冷、推荐本地老牌鑫盛达、冷顺安 - 我叫一

2026/6/18 22:29:08 查看详情
嵌入式调试器组件化界面与拖拽交互技术详解

嵌入式调试器组件化界面与拖拽交互技术详解

2026/6/18 22:19:33 查看详情
YOLOv11涨点改进| CVPR 2026 | 独家创新首发、特征融合改进篇| 引入CMGF 引导特征融合机制,实现对不同模态特征的自适应增强与高效融合,助力多模态目标检测,小目标检测或分割有效涨点

YOLOv11涨点改进| CVPR 2026 | 独家创新首发、特征融合改进篇| 引入CMGF 引导特征融合机制,实现对不同模态特征的自适应增强与高效融合,助力多模态目标检测,小目标检测或分割有效涨点

2026/6/18 22:29:00 查看详情
E-E-A-T 成第一权重:2027 年无经验内容将被彻底淘汰

E-E-A-T 成第一权重:2027 年无经验内容将被彻底淘汰

2026/6/18 23:21:38 查看详情
深圳福田园岭老小区搬家公司推荐 经验足师傅高效搬运攻略 - 从来都是英雄出少年

深圳福田园岭老小区搬家公司推荐 经验足师傅高效搬运攻略 - 从来都是英雄出少年

2026/6/18 22:29:04 查看详情

关于尧图

立足北京本地的一站式网站建设服务与设计教学平台,深耕企业网站定制开发、全网 SEO 优化及网络推广服务。

快速链接

  • 关于我们
  • 建站服务
  • 案例展示
  • 资讯中心

服务项目

  • 企业官网定制
  • UI 界面设计
  • SEO 优化推广
  • 移动端适配

联系方式

电话:400-XXX-XXXX

邮箱:info@zskr.cn

地址:北京市朝阳区 XXX 路 XX 号

© 2026 尧图网络科技 版权所有 | 京 ICP 备 XXXXXXXX 号