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

2025/10/27~2025/11/2 做题笔记 - sb

2025/10/27

第一代图灵机

一样的套路,考虑每一个右端点对应的最左边可以到哪里,显然是最小的 \(j\) 使得 \(\max\limits_{j \le k \le i}pre_k = j - 1\)。考虑线段树维护一个区间内的最大的答案和最大的 \(pre_i\),但是发现当 \(pushup\) 的时候不好判断右区间对整个区间的贡献,所以需要维护一个区间中右半边区间对答案的贡献。不过最后可以发现一个区间内最大的答案也没什么用,没办法只通过它算出一个区间内指定一个最小 \(pre\) 的答案,还是只能用 \(pushup\) 算出来

Code
#include <iostream>
#include <set>using namespace std;
using ll = long long;
using pll = pair<ll, ll>;const int kN = 2e5 + 1;int n, m, q, c[kN];
set<int> s[kN];
ll a[kN];
struct Tr {int mx;ll val;
} tr[kN * 4];ll Pushup(int mx, int x, int l, int r) {if (l == r)return a[l] - a[max(mx, tr[x].mx)];int m = (l + r) / 2;if (mx > tr[x * 2].mx)return max(a[m] - a[mx], Pushup(mx, x * 2 + 1, m + 1, r));return max(tr[x].val, Pushup(mx, x * 2, l, m));
}
void Update(int p, int k, int x = 1, int l = 1, int r = n) {if (l == r)return tr[x].mx = k, void();int m = (l + r) / 2;if (p <= m)Update(p, k, x * 2, l, m);elseUpdate(p, k, x * 2 + 1, m + 1, r);tr[x].mx = max(tr[x * 2].mx, tr[x * 2 + 1].mx), tr[x].val = Pushup(tr[x * 2].mx, x * 2 + 1, m + 1, r);
}
ll Query(int mx, int nl, int nr, int x = 1, int l = 1, int r = n) {if (nl <= l && r <= nr)return Pushup(mx, x, l, r);int m = (l + r) / 2;ll res = 0;if (nl <= m)res = Query(mx, nl, nr, x * 2, l, m);if (nr > m)res = max(res, Query(max(mx, tr[x * 2].mx), nl, nr, x * 2 + 1, m + 1, r));return res;
}int main() {
#ifndef ONLINE_JUDGEfreopen("in", "r", stdin);freopen("out", "w", stdout);
#endifcin.tie(0)->sync_with_stdio(0);cin >> n >> m >> q;for (int i = 1; i <= m; i++)s[i].insert(0);for (int i = 1; i <= n; i++)cin >> a[i], a[i] += a[i - 1];for (int i = 1; i <= n; i++) {cin >> c[i];Update(i, *s[c[i]].rbegin()), s[c[i]].insert(i);}for (int op, l, r; q--;) {cin >> op >> l >> r;if (op - 1) {auto it = s[c[l]].find(l);if (next(it) != s[c[l]].end())Update(*next(it), *prev(it));s[c[l]].erase(l), c[l] = r;it = s[c[l]].lower_bound(l);if (it != s[c[l]].end())Update(*it, l);Update(l, *prev(it)), s[c[l]].insert(l);} else {cout << Query(l - 1, l, r) << '\n';}}return 0;
}
http://www.hskmm.com/?act=detail&tid=40034

相关文章:

  • 2025 年环保搅拌设备,搅拌装置设备,框式搅拌设备厂家最新推荐,实力品牌深度解析采购无忧之选!
  • 2025 年搅拌器搅拌设备,侧入式搅拌设备,斜插式揽拌设备,卧式搅拌设备厂家最新推荐,聚焦资质、案例、售后的五家企业深度解读
  • 芯片实现路线图
  • 2025 年顶入式搅拌设备,直叶搅拌设备,节能减排搅拌设备厂家最新推荐,技术实力与市场口碑深度解析
  • 2025 年矿用平板车,重型平板车,履带平板车,矿山平板车厂家最新推荐,产能、专利、环保三维数据透视!
  • 2025 年 10 月翻斗式矿车,侧翻矿车,1 吨矿车,运输矿车厂家最新推荐,产能、专利、环保三维数据透视
  • 醒图电脑版下载与安装教程(2025最新版)
  • 读书笔记:告别数据冗余!Oracle引用分区让父子表管理如此简单
  • 零点哥哥的站,当然得好好把玩!
  • 2025年钢质喷塑电缆桥架优质厂家权威推荐榜单:316不锈钢桥架/线缆不锈钢桥架/梯式不锈钢电缆桥架源头厂家精选。
  • OpenAI推出企业级SharePoint连接器,挑战Microsoft 365 Copilot
  • 2025 年定制矿车,大型矿车,固定式矿车厂家最新推荐,产能、专利、环保三维数据透视
  • 何为高阶组件(higherordercomponent) ?
  • CentOS下Docker部署mysql8.0
  • 杭州AI优化企业:国内GEO领域技术标杆 - 二当家
  • 构建定时 Agent,基于 Spring AI Alibaba 实现自主运行的人机协同智能 Agent
  • 《代码大全2》观后感(一):从“写代码”到“做工程”的思维跃迁
  • 2025 年空气悬浮鼓风机,磁悬浮鼓风机,章鼓鼓风机厂家最新推荐,产能、专利、环保三维数据透视!
  • 洞悉过往,一目了然:浅述视频融合平台EasyCVR如何实现海量视频录像的智能检索与高效回看
  • Node-RED正在颠覆整个物联网网关行业
  • 2025 年进口螺杆泵,萨伯特螺杆泵,污泥螺杆泵厂家最新推荐,实力品牌深度解析采购无忧之选!
  • 单体架构中的事件驱动架构:Java应用程序的渐进式重构
  • Xamarin.From ContentView 自定义标题栏
  • 快克品牌焊台
  • 2025 年 10 月动轨式格栅、动轨式格栅除污机厂家最新推荐,产能、专利、环保三维数据透视
  • 20232411 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 构建强化版 Squoosh:基于 libimagequant-wasm 的高性能本地图片压缩方案
  • iOS混淆实战用多工具组合把IPA加固做成可复用的工程能力(iOS混淆 IPA加固 无源码混淆
  • java(2)-编写一个程序“Hello World!”
  • 2025 年 10 月 wms 仓库管理系统,仓储管理系统 wms 公司最新推荐,技术实力与市场口碑深度解析!