CF1286E

news/2026/1/9 4:15:51/文章来源:https://www.cnblogs.com/Loop1st/p/19448051

很牛的题。

定义一个 border 的权值为这个 border 对应后缀的 \(w\) 的最小值。考虑每次加入一个字符后答案的增量,等于加入后所有 border 的权值和。

假设当前加入字符 \(c\),首先如果 \(s_0 = c\),新增一个长度为 \(1\) 的 border,另外,如果一个 border 对应前缀的下一个字符不是 \(c\),则这个 border 需要删除。怎么找要删的 border 呢,我们考虑 fail 树,即 \(i\)\(nxt_i\) 连边,记 \(anc_i\) 表示 \(i\) 的祖先中第一个后继字符和 \(c\) 不同的 border,暴力删除,可以使用单调栈上二分求其权值。由于最多加入 \(n\) 个 border,所以均摊下来每次删除 \(\mathcal{O}(1)\) 个。

不被删除的 border 都会往后拓展,那么如果其权值 \(> w_i\) 就需要修改为 \(w_i\),开一个 map 暴力跳是对的,因为总共有 \(\mathcal{O}(n)\)\(w\),每次修改至少减少一种。

时间复杂度 \(\mathcal{O}(n \log n)\)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef __int128 i128;
typedef pair<int, int> pii;
const int N = 6e5 + 10, mod = 998244353;
template<typename T>
void dbg(const T &t) { cout << t << endl; }
template<typename Type, typename... Types>
void dbg(const Type& arg, const Types&... args) {cout << arg << ' ';dbg(args...);
}
namespace Loop1st {
int n, nxt[N], anc[N], w[N];
char c;
ll sum;
i128 ans;
vector<int>stk;
string s;
map<int, int>cnt;
int ask(int pos) {return w[*lower_bound(stk.begin(), stk.end(), pos)];
}
void print(i128 num) {if (num >= 10) print(num / 10);cout << (int)(num % 10);
}
void main() {cin >> n;cin >> c >> w[0];s += c;stk.push_back(0);ans = w[0];cout << w[0] << '\n';for (int i = 1, j = 0; i < n; i++) {cin >> c >> w[i];c = (ans + c - 'a') % 26 + 'a';w[i] ^= ans & ((1 << 30) - 1);s += c;while (j && s[j] != c) j = nxt[j];if (s[j] == c) j++;nxt[i + 1] = j;if (c == s[nxt[i]]) anc[i] = anc[nxt[i]];else anc[i] = nxt[i];for (int k = i; k;) {if (s[k] == c) k = anc[k];else {int v = ask(i - k); // 删除一个长度为 k 的 border, 查询 [i - k, i - 1] 的后缀 mincnt[v]--;sum -= v;if (!cnt[v]) cnt.erase(v);k = nxt[k];}}if (s[0] == c) cnt[w[i]]++, sum += w[i];while (!stk.empty() && w[stk.back()] >= w[i]) stk.pop_back();stk.push_back(i);int del = 0;for (auto it = cnt.upper_bound(w[i]); it != cnt.end(); ) {auto [x, y] = *it;del += y;sum -= (ll)y * (x - w[i]);auto tmp = next(it);cnt.erase(it);it = tmp;}cnt[w[i]] += del;ans += sum + w[stk[0]]; // 别忘了整个串也要统计print(ans);cout << '\n';}
}}
int main() {// freopen("data.in", "r", stdin);// freopen("data.out", "w", stdout);ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);int T = 1;// cin >> T;while (T--) Loop1st::main();return 0;
}
// start coding at 13:53
// finish debugging at 14:33

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1119045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年杭州精装修大平层设计公司权威推荐:精装修全案设计/精装房改造/精装修全屋定制源头服务商精选 - 品牌推荐官

专业的设计师团队、严格的施工标准和可靠的全案落地能力,正成为杭州高端住宅业主选择服务商的首要标准。 在杭州这座充满活力的现代化城市,拥有一套视野开阔、空间通透的大平层是许多家庭对品质生活的向往。然而,从…

elasticsearch增删改查索引结构示例 - 详解

elasticsearch增删改查索引结构示例 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

本地部署智能家居系统 OpenHAB 并实现外部访问( Windows 版本)

OpenHAB&#xff08; Open Home Automation Bus &#xff09;是一款开源的智能家居系统&#xff0c;它允许用户连接并控制各种智能设备&#xff0c;无论这些设备是来自不同制造商还是基于不同的技术标准&#xff0c;适合那些希望将家中的智能设备统一管理&#xff0c;并希望通过…

AI Agent 时代全攻略:大模型+智能体,编程开发者的最强外挂,收藏这一篇就够了!

Agent时代的到来——AI从工具到伙伴的跨越 当Meta以数十亿美元收购AI Agent初创公司Manus&#xff0c;当Gartner预测2026年40%的企业应用将集成任务专用Agent&#xff0c;当全球市场规模在两年内实现翻倍增长&#xff0c;一场由智能体&#xff08;AI Agent&#xff09;引领的技…

【深度学习】YOLO实战之模型训练

YOLO 模型训练是核心执行环节&#xff0c;这一步是把前期的数据集、配置文件落地成可用模型的关键&#xff0c;我会从数据增强&#xff08;怎么让模型学得更好&#xff09;、训练流程&#xff08;一步步落地&#xff09;、监控指标&#xff08;怎么判断训练效果&#xff09; 三…

Twitter Shorts 的封面图设计吸引点击技巧是什么?

Twitter Shorts 封面图设计:我压箱底的吸引点击技巧 说真的,每次我刷 Twitter(现在叫 X),看到那些 Shorts 或者 Reels,第一眼决定我点不点进去的,真的就是那个封面图。有时候视频内容可能平平无奇,但封面太抓人…

2026年1000元支付宝立减金回收多少,各面值价格表 - 淘淘收小程序

在日常使用支付宝的过程中,我们可能会获得各种各样的立减金。有时候,这些立减金的使用场景不符合我们的需求,或者我们暂时用不上,那该如何处理呢?这就涉及到支付宝立减金回收。了解立减金回收价格,能让我们在处理…

机器人关节多维力试验机/传动系统总成效率试验机/制动系统总成效率试验机/传动机构运动工况模拟试验机哪个品牌更强?有没有资深采购能给点推荐? - 品牌推荐大师

在高端装备制造领域,传动机构运动工况模拟试验机的选型直接关乎产品研发效率与质量管控精度。面对市场上众多品牌,“哪个品牌更强”成为采购者的核心困惑。结合多年行业采购经验,选择这类设备需跳出单纯的参数对比,…

基于博弈与需求响应模型的光伏用户群电能共享方法探索

matlab代码&#xff1a;基于博弈与需求响应模型的光伏用户群的电能共享方法 摘要&#xff1a;为了使光伏用户群内各经济主体能实现有序的电能交易&#xff0c;提出了一种基于光伏电能供需比&#xff08;&#xff33;&#xff24;&#xff32;&#xff09;的内部价格模型。 在考…

CentOS 7 新磁盘LVM挂载详细步骤

CentOS 7 新磁盘LVM挂载详细步骤 1. 准备工作:查看磁盘信息 # 查看当前磁盘情况 lsblk fdisk -l# 查看磁盘是否被识别 lsscsi ls -l /dev/sd*2. 分区(可选,LVM可以直接使用整盘) 方案A:创建分区 # 对sdb进行分区(…

2026执医技能通关攻略:高效工具+核心操作+避坑指南,助你一次过! - 品牌测评鉴赏家

2026执医技能通关攻略:高效工具+核心操作+避坑指南,助你一次过!一、备考痛点直击:26执医技能备考,这些难题你是否也遇到? 执业医师资格考试的技能操作部分,是众多医学生和医务工作者迈向职业晋升道路上的关键关…

SWMM深度二次开发专题8:网络分析-最短路径查询

使用networkClass实例可以通过findShortestPath函数获得两点之间的最短路径信息. 1 案例项目内容 本专题对应的开发案例为\software\tutorial\exp_network_getNetwork文件夹中的内容,其中SWMMCPP_network_getNetwork子文件夹为VS2022 C项目内容, swmm_network子文件夹为管网模…

2025年碳化硅品牌口碑榜:这些品牌为何备受青睐?磨料/不锈钢灰/棕刚玉/铬刚玉/碳化硅/黑碳化硅,碳化硅定制口碑推荐 - 品牌推荐师

近年来,随着新能源汽车、光伏、半导体等行业的快速发展,碳化硅作为第三代半导体材料的核心原料,其市场需求持续攀升。据行业数据显示,2024年全球碳化硅市场规模已突破30亿美元,预计2025年将保持年均15%以上的增速…

西门子840D HMI ADVANCED PC版:数控与PLC数据备份恢复、伺服调试、参数设定...

西门子840D HMI ADVANCED FOR PC。 也可用于810D,840DSL。 1、软件可安装到台式机或笔记本上&#xff0c;可以连接到机床的NCU进行NC与PLC的数据备份与恢复&#xff0c;备份和恢复的数据存储在电脑中。 也可以把NC程序放到电脑中&#xff0c;通过此软件加载到NCU中&#xff0c;…

跨境家具的海外仓安装教程广告互动形式是什么?

跨境家具的海外仓安装教程广告,到底怎么搞才能让老外忍不住点赞转发? 嘿,朋友。咱们今天来聊聊一个特别具体,但又让很多做跨境家具的朋友头疼的事儿:怎么在Twitter上,用海外仓安装教程这种硬核内容,做出让人愿意…

2025年市面上的艺术漆厂商有哪些,诺兰迪艺术漆/诺兰迪艺术涂料/墙面艺术漆/环保艺术涂料,艺术漆公司哪个好 - 品牌推荐师

随着消费者对家居环境的美学追求与健康环保意识同步提升,艺术涂料市场正经历着一场深刻的变革。从简单的墙面装饰,到承载空间个性与情感表达的艺术载体,艺术漆以其丰富的质感、多变的色彩和独特的肌理,成为现代室内…

医疗宣称需替换为场景化描述才能合规?

Instagram 营销:当“医疗宣称”遇上“场景化描述”,我们到底在怕什么? 嘿,最近刷 Instagram,是不是发现很多品牌说话的方式变了?以前那种“三天见效”、“根治XX”的标题党好像收敛了不少。取而代之的,是一些看…

转速恒压频比交流变频调速系统Simulink仿真

转速恒压频比交流变频调速系统Simulink仿真&#xff0c;可观察到电压频率的变比情况以及电动机的转速波形。 配有精美的报告说明。在电力系统中&#xff0c;变频调速技术是一种非常重要的控制手段&#xff0c;广泛应用于电机调速、电力补偿等领域。转速恒压频比调速系统是一种基…

点阵数码管显示屏驱动LED显示驱动芯片VK1S68C 数显驱动器原厂【FAE技术支持】

VK1S68C是一种带键盘扫描接口的数码管或点阵LED驱动控制专用芯片,内部集成有3 线串行接口、数据锁存器、LED 驱动、键盘扫描等电路。SEG脚接LED阳极,GRID脚接LED 阴极,可支持13SEGx4GRID、12SEGx5GRID、11SEGx6GRID…

安防监控视频汇聚平台EasyCVR打造出入口匝道安全畅行智慧管理方案

出入口匝道作为高速公路、城市快速路的关键交通节点,是车流交汇、方向转换的核心区域,却也长期面临拥堵频发、事故率高、管控滞后等痛点。传统视频监控方案因存在协议兼容不足、网络传输不稳定、智能分析缺失等问题,…