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

资讯详情

深度解读 · 专业分析

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

最新资讯

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

ABC426

📅 发布时间:2026/6/20 14:43:24 👁 浏览次数:
ABC426

ABC426

C. Upgrade Required

开一个桶来维护每种版本的电脑数量,一开始每个桶中的电脑数都是 \(1\)
用变量 \(r\) 来维护“第一个可能非空的版本号”,并且 \(r\) 只会单调递增。每次操作把 \(r\) 指向的连续若干个桶(直到 \(x\))合并到 \(y\),并把这些痛清空。

代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)using namespace std;int main() {int n, q;cin >> n >> q;vector<int> cnt(n+1);for (int i = 1; i <= n; ++i) cnt[i] = 1;int r = 1;rep(qi, q) {int x, y;cin >> x >> y;int ans = 0;while (r <= x) {ans += cnt[r];cnt[r] = 0;r++;}cnt[y] += ans;cout << ans << '\n';}return 0;
}

D. Pop and Insert

固定某个极大同字符连续段,和它不在一段的相同字符的代价是 \(2\),剩下其他不同字符的代价是 \(1\)

代码实现
#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> cnt(2);vector<pair<char, int>> d(1, {s[0], 0});for (char c : s) {cnt[c-'0']++;if (d.back().first == c) {d.back().second++;}else {d.emplace_back(c, 1);}}int ans = n*2;for (auto [c, num] : d) {int i = c-'0';vector<int> ncnt = cnt;ncnt[i] -= num;int now = ncnt[i]*2 + ncnt[i^1];ans = min(ans, now);}cout << ans << '\n';
}int main() {int t;cin >> t;while (t--) solve();return 0;
}

E. Closest Moment

将两人的位置做相对位移(把 Aoki 的位置视为参照,把原点看作 Aoki 的位置)——这样问题变为“一个点(Takahashi 相对于 Aoki 的位置)在时间上沿线段-线段折线运动,求到原点的最小距离”。
因为速度相同且是匀速行直线,故相对位移随时间是分段线性的,只需在关键时间点(\(0\),短者到达时,长者到达时)取位置,得到最多两条线段的折线。
最小距离即是原点到这条折线的最短距离,可逐段求点到线段距离并取最小值。

代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)using namespace std;const double eps = 1e-9; 
struct V {double x, y;V(double x=0, double y=0): x(x), y(y) {}V& operator+=(const V& v) { x += v.x; y += v.y; return *this; }V operator+(const V& v) const { return V(*this) += v; }V& operator-=(const V& v) { x -= v.x; y -= v.y; return *this; }V operator-(const V& v) const { return V(*this) -= v; }V& operator*=(double s) { x *= s; y *= s; return *this; }V operator*(double s) const { return V(*this) *= s; }V& operator/=(double s) { x /= s; y /= s; return *this; }V operator/(double s) const { return V(*this) /= s; }double dot(const V& v) const { return x*v.x + y*v.y; }double cross(const V& v) const { return x*v.y - v.x*y; }double norm2() const { return x*x + y*y; }double norm() const { return sqrt(norm2()); }int ort() const { // orthantif (abs(x) < eps and abs(y) < eps) return 0;if (y > 0) return x > 0 ? 1 : 2;else return x < 0 ? 3 : 4; }bool operator<(const V& v) const {int o = ort(), vo = v.ort();if (o != vo) return o < vo;return cross(v) > 0;}
};
istream& operator>>(istream& is, V& v) {is >> v.x >> v.y; return is;
}
ostream& operator<<(ostream& os, const V& v) {os << "(" << v.x << "," << v.y << ")"; return os;
}struct Line {V s, t;Line(V s=V(0,0), V t=V(0,0)):s(s),t(t){}V dir() const { return t-s;}// V normalize() const { return dir().normalize();}double norm() const { return dir().norm();}/* +1: s-t,s-p : ccw* -1: s-t,s-p : cw* +2: t-s-p* -2: s-t-p*  0: s-p-t */int ccw(const V& p) const {if (dir().cross(p-s) > eps) return +1;if (dir().cross(p-s) < -eps) return -1;if (dir().dot(p-s) < -eps) return +2;if (dir().norm()+eps < (p-s).norm()) return -2;return 0;}bool touch(const Line& l) const {int a = ccw(l.s)*ccw(l.t), b = l.ccw(s)*l.ccw(t);return !a || !b || (a == -1 && b == -1);}V divpoint(double p) const {return s*(1-p) + t*p;}double distSP(V p) const {if ((p-s).dot(t-s) < eps) return (s-p).norm();if ((p-t).dot(s-t) < eps) return (t-p).norm();return abs((s-p).cross(t-p))/(t-s).norm();}
};void solve() {Line t, a;cin >> t.s >> t.t >> a.s >> a.t;if (t.norm() < a.norm()) swap(t, a);double tlen = t.norm();double alen = a.norm();double ans = 1e18;{Line l;l.s = t.s-a.s;l.t = t.divpoint(alen/tlen) - a.t;ans = min(ans, l.distSP(V(0, 0)));}{Line l;l.s = t.divpoint(alen/tlen) - a.t;l.t = t.t-a.t;ans = min(ans, l.distSP(V(0, 0)));}printf("%.10f\n", ans);
}int main() {int t;cin >> t;while (t--) solve();return 0;
}

F. Clearance

使用支持区间加法和区间最小值查询的带延迟标记的线段树来维护数组状态。
当某次操作使得某个元素变为负数时,先在线段树上通过二分查找定位该位置,然后将其置为 \(+\infty\) 。同时再用树状数组维护 \(+\infty\) 值的个数,以支持查询区间内至少有 \(k\) 件的商品种类数。

代码实现
#include <bits/stdc++.h>
#include <atcoder/all>
using namespace atcoder;
#define rep(i, n) for (int i = 0; i < (n); ++i)using namespace std;
using ll = long long;ll op(ll a, ll b) { return min(a, b); }
ll e() { return 1e18; }
ll mapping(ll f, ll x) { return x-f; }
ll composition(ll f, ll g) { return f+g; }
ll id() { return 0; }int main() {int n;cin >> n;vector<ll> a(n);rep(i, n) cin >> a[i];int q;cin >> q;lazy_segtree<ll, op, e, ll, mapping, composition, id> rem(a);fenwick_tree<int> sold(n);rep(qi, q) {int l, r, k;cin >> l >> r >> k;--l;ll ans = ll(r-l-sold.sum(l, r))*k;rem.apply(l, r, k);while (1) {auto f = [&](ll x) { return x >= 0; };int i = rem.max_right(l, f);if (i >= r) break;ans += rem.get(i);rem.set(i, e());sold.add(i, 1);}cout << ans << '\n';}return 0;
}

G. Range Knapsack Query

二区间合并(又叫“猫树分治”)
在这里,只需对左半区间做从右往左的 \(01\) 背包,以及对右半区间做从左往右的 \(01\) 背包

代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)using namespace std;
using ll = long long;
using Q = tuple<int, int, int, int>;inline void chmax(ll& a, ll b) { if (a < b) a = b; }int main() {cin.tie(nullptr) -> sync_with_stdio(false);int n, q;cin >> n >> q;vector<int> w(n), v(n);rep(i, n) cin >> w[i];rep(i, n) cin >> v[i];vector<Q> qs;rep(qi, q) {int l, r, c;cin >> l >> r >> c;--l;qs.emplace_back(l, r, c, qi);}vector<ll> ans(q);const int m = 200;vector dp(n+1, vector<ll>(m+1));auto f = [&](auto& f, int l, int r, vector<Q> qs) -> void {int k = (l+r)/2;dp[k] = vector<ll>(m+1);for (int i = k-1; i >= l; --i) {dp[i] = dp[i+1];for (int j = m-w[i]; j >= 0; --j) {chmax(dp[i][j+w[i]], dp[i][j]+v[i]);}}for (int i = k; i < r; ++i) {dp[i+1] = dp[i];for (int j = m-w[i]; j >= 0; --j) {chmax(dp[i+1][j+w[i]], dp[i+1][j]+v[i]);}}vector<Q> ql, qr;for (auto [nl, nr, c, qi] : qs) {if (nr < k) ql.emplace_back(nl, nr, c, qi);else if (nl > k) qr.emplace_back(nl, nr, c, qi);else {ll now = 0;rep(j, c+1) chmax(now, dp[nl][j]+dp[nr][c-j]);ans[qi] = now;}}if (ql.size()) f(f, l, k, ql);if (qr.size()) f(f, k, r, qr);};f(f, 0, n, qs);rep(qi, q) cout << ans[qi] << '\n';return 0;
}

相关新闻

国庆 Day1 强基化学

国庆 Day1 强基化学

2026/6/20 8:23:49 查看详情
实用指南:【发布实录】云原生+AI,助力企业全球化业务创新

实用指南:【发布实录】云原生+AI,助力企业全球化业务创新

2026/6/20 6:48:46 查看详情
深入解析:vscode + cmake + ninja+ gcc 搭建MCU开发环境

深入解析:vscode + cmake + ninja+ gcc 搭建MCU开发环境

2026/6/19 19:50:25 查看详情
Wand-Enhancer:开源增强工具如何重塑游戏修改体验

Wand-Enhancer:开源增强工具如何重塑游戏修改体验

2026/6/20 14:41:01 查看详情
5分钟掌握AI语音克隆:RVC变声框架实战指南

5分钟掌握AI语音克隆:RVC变声框架实战指南

2026/6/20 14:39:53 查看详情
2026 年抚顺厨卫屋顶防水修缮三家对比测评 吉修匠 99.8 分稳居榜首 - 吉修匠

2026 年抚顺厨卫屋顶防水修缮三家对比测评 吉修匠 99.8 分稳居榜首 - 吉修匠

2026/6/20 14:39:39 查看详情
论文一对一辅导深度排行!实测8家机构,找对导师不踩坑! - 艾德思Editsprings

论文一对一辅导深度排行!实测8家机构,找对导师不踩坑! - 艾德思Editsprings

2026/6/20 14:39:39 查看详情
南方科技大学考研辅导班TOP推荐:核心指南与深度拆解 - michalwang

南方科技大学考研辅导班TOP推荐:核心指南与深度拆解 - michalwang

2026/6/20 14:39:39 查看详情
嵌入式GUI开发实战:AppWizard可视化设计器从入门到精通

嵌入式GUI开发实战:AppWizard可视化设计器从入门到精通

2026/6/20 14:38:27 查看详情
团队博客 5:Sprint 3——收官与优化

团队博客 5:Sprint 3——收官与优化

2026/6/20 0:00:19 查看详情
3分钟掌握微信语音转换:Silk v3解码器完整使用指南

3分钟掌握微信语音转换:Silk v3解码器完整使用指南

2026/6/20 0:01:25 查看详情
VAC进程监控模块完全解析:3种扫描类型与虚拟方法表技术揭秘

VAC进程监控模块完全解析:3种扫描类型与虚拟方法表技术揭秘

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

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

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

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

2026/6/20 4:00:16 查看详情
嵌入式调试器组件化界面与拖拽交互技术详解

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

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

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

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

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

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

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

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

关于尧图

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

快速链接

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

服务项目

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

联系方式

电话:400-XXX-XXXX

邮箱:info@zskr.cn

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

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