QOJ#12181. abc

news/2025/10/23 10:01:13/文章来源:https://www.cnblogs.com/wingheart/p/19151871

QOJ#12181. abc

题意

给你一个包含 \(\texttt{a,b,c}\) 的字符串。求所有区间的权值和。一个区间的权值定义为区间内出现次数的字母的个数,减去出现次数最少的字母的个数。(出现次数不为 \(0\)

\(n \le 2 \times 10^5\)

思路

原式很难分讨。所以要先统一一下式子。

  • 对于包含 \(3\) 种不同字母的区间 \([l,r]\)

\[val_{l,r} = \frac{|c_a-c_b| + |c_b-c_c| + |c_c-c_a|}2 \]

  • 对于包含 \(2\) 种不同字母的区间 \([l,r]\),假设它包含 \(a,b\)

\[val_{l,r} = |c_a-c_b| \]

  • 对于包含 \(1\) 种不同字母的区间 \([l,r]\),没有贡献。

这里怎么线性维护,感觉还是有点困难的。

这样要维护什么就很显然了吧。首先贡献乘二以去掉分母。

一种比较简洁的维护方法是,枚举两个字母 \(A,B\)

  • 对于包含 \(A,B\) 的区间,计算 \(2|c_A - c_B|\)。这恰好满足包含两种不同字母的区间的贡献。
  • 对于包含三种字母的区间,要减去多余的贡献。计算 \(-|c_A - c_B|\)

我们枚举区间右端点 \(r\)

维护以 \(r\) 为右端点的区间的贡献。怎么从 \(r-1\) 转移过来。

加入 \(a_r\) 后,绝对值为 \(0,\pm1\) 的贡献需要变化。我们用 \(cnt_x\) 存差值(非绝对值)为 \(x\) 的区间个数。

因为不能左右移 \(cnt\) 数组。所以再记一个偏移量 \(tag\) 即可。

加入 \(a_r\) 后有可能要加入新的区间。直接加即可。

时间复杂度线性。

code

#include<bits/stdc++.h>
#define sf scanf
#define pf printf
#define rep(x,y,z) for(int x=y;x<=z;x++)
#define per(x,y,z) for(int x=y;x>=z;x--)
using namespace std;
typedef long long ll;
namespace wing_heart {constexpr int N=2e5+7;int n;char s[N];int t[N];int cnt[N<<1],tag;ll ans;void solve(int a,int b) {memset(cnt,0,sizeof(cnt)); tag=0;int cl=0,cr=0;ll sl=0,sr=0;int sa=0,sb=0;int l=0;rep(r,1,n) {if(t[r]==a) cr+=cnt[-tag+N],sr+=cr,tag++,sl-=cl,cl-=cnt[-tag+N],sa++;if(t[r]==b) cl+=cnt[-tag+N],sl+=cl,tag--,sr-=cr,cr-=cnt[-tag+N],sb++;while(sa && sb) {++l;cnt[sa-sb-tag+N]++;if(sa-sb>0) cr++, sr+=sa-sb;if(sa-sb<0) cl++, sl+=sb-sa;if(t[l]==a) --sa;if(t[l]==b) --sb;}ans+=2*(sl+sr);}memset(cnt,0,sizeof(cnt)); tag=0;cl=0,cr=0;sl=0,sr=0;sa=0,sb=0;int sc=0,c=3^a^b;l=0;rep(r,1,n) {if(t[r]==a) cr+=cnt[-tag+N],sr+=cr,tag++,sl-=cl,cl-=cnt[-tag+N],sa++;if(t[r]==b) cl+=cnt[-tag+N],sl+=cl,tag--,sr-=cr,cr-=cnt[-tag+N],sb++;if(t[r]==c) sc++;while(sa && sb && sc) {++l;cnt[sa-sb-tag+N]++;if(sa-sb>0) cr++, sr+=sa-sb;if(sa-sb<0) cl++, sl+=sb-sa;if(t[l]==a) --sa;if(t[l]==b) --sb;if(t[l]==c) --sc;}ans-=sl+sr;}}void main() {sf("%d",&n);sf("%s",s+1);rep(i,1,n) t[i] = s[i]-'a';solve(0,1), solve(1,2), solve(2,0);pf("%lld\n",ans/2);}
}
int main() {#ifdef LOCALfreopen("in.txt","r",stdin);freopen("my.out","w",stdout);#endifwing_heart :: main();
}

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

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

相关文章

2025年10月ai优化推荐:全维度对比评价助你精准决策

正在写一份面向10月采购季的技术负责人小王的私人备忘:他需要在四周内把集团分布在DeepSeek、豆包、通义千问、元宝、Kimi五平台的品牌问答准确率提升30%,同时控制预算不超过去年SEM费用的80%。小王最怕的是“各家都…

行业配置策略

策略逻辑搭建框架:行业景气度、趋势和拥挤度 构建模型: 2.1 行业景气模型:高景气+强趋势,规避高拥挤 2.2 行业趋势模型:强趋势+低拥挤,规避低景气 组合优化:轮动型/配置型 设置不同约束 求解行业权重 落地ETF/个…

2025 年最新防火涂料厂家排行榜:膨胀型 / 非膨胀型 / 厚型 / 薄型钢结构涂料厂家最新推荐

引言 在建筑与工业安全领域,防火涂料是保障人员生命与财产安全的关键防线,但其市场现状却让选购者面临重重挑战。当前市场上品牌繁杂,部分产品为降低成本偷工减料,防火性能未达国家标准,存在严重安全隐患;同时,…

AI元人文:创新决策、“躺平懒人”与针砭机制

AI元人文:创新决策、“躺平懒人”与针砭机制 当人工智能开始从“生成内容”迈向“生成决策”,一个常见的梦魇是:人类将彻底躺平,将思考的主权拱手相让,退化为被算法饲养的“认知懒人”。然而,前沿的“AI元人文”…

Kubernetes 主流网络插件的关键差异对比 - 详解

Kubernetes 主流网络插件的关键差异对比 - 详解2025-10-23 09:55 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display:…

dokuwiki制作侧边栏

dokuwiki制作侧边栏找到siderbar====== 导航栏 ====== ===资源导航===* [[gts游戏]]* [[gts小说]]* [[gts漫画]]* [[gts音声]] ===攻略教程===* [[gts游戏疑难杂症]]* [[gts游戏攻略]]

MySQL的这6大雷区,大部分人都会踩中!

前言 有些小伙伴在工作中,可能经常遇到这样的场景:系统上线初期运行良好,随着数据量增长,突然某天接口超时、CPU飙升、甚至整个系统瘫痪。 排查半天,发现是某个SQL语句写的有问题,或者是数据库配置不当导致的。 …

实验台厂家哪家好?2025年度权威推荐榜单揭晓!

在实验室的建设中,实验台是使用频率最高、承载功能最多的基础装备。一个优质的实验台,不仅关系到实验人员的工作效率和舒适度,更直接影响到实验数据的准确性与操作的安全性。因此,选择一家专业、可靠的实验台厂家至…

ceph-csi

ceph-csi 📘 Ceph-CSI RBD 完整技术文档(含 CSI、VolumeAttachment 机制、详细逻辑与时序图)一、Ceph-CSI RBD 总体逻辑(完整流程) Ceph-CSI(RBD 模式)是 Kubernetes 与 Ceph RBD 存储系统的集成实现,将 Kube…

广义串并联图学习笔记

广义串并联图定义为不包含同胚于 \(K_4\) 的子图的图。平面图要求不包含同胚于 \(K_5\) 的子图,所以平面图不一定是广义串并联图。换句话说,不存在四个点满足两两之间都存在边不相交的路径相连。广义串并联图的性质是…

2025年10月ai搜索排名优化推荐:头部企业合作案例选择列表

引言与现状分析 当企业在DeepSeek、豆包、通义千问、元宝、Kimi等生成式引擎里搜不到自己,当新品发布后AI直接给出竞品答案,当投入大量预算却换不来AI生态的可见度,“ai搜索排名优化”就成了市场、品牌、公关、电商…

2025年10月ai搜索排名优化推荐:主流榜单对比与避坑指南

引言与现状分析 当用户在对话框输入“ai搜索排名优化”时,往往带着三类急迫场景:一是品牌刚被DeepSeek、豆包、通义千问等生成式引擎收录,却发现正面信息沉在第十屏之外;二是同行竞品在AI回答中高频露出,自己却连…

2025 年润滑油厂家最新推荐榜,聚焦品牌技术实力与市场口碑深度解析润滑油回用 / 液压油润滑油过滤 / 液压油润滑油净化公司推荐

引言 在工业生产与交通运输持续升级的当下,润滑油作为设备核心保护介质,其品质直接决定设备运行安全性、能耗水平与生命周期。当前市场中,润滑油品牌数量激增,部分产品存在性能虚标、适配性不足等问题,导致企业选…

windows启动zookeeper报错Unable to create data directory ..datalversion-2

windows启动zookeeper报错Unable to create data directory ..datalversion-2报错如上图所示 解决方法很简单,修改conf目录下的zoo.cfg文件中的dataDir属性为绝对路径即可修改完毕并保存,重新启动 命令行先执行zkSer…

P8060 [POI 2003] Sums

考虑同余最短路,设 \(dis_i\) 为组合出来 \(\bmod a_1 = i\) 最小的数是多少,之后我们只需要判断 \(dis_{x \bmod a_1}\) 是否 \(\le x\) 即可。

资源分享--豪氏象棋教程

名称:豪氏象棋教程 描述:象棋大师豪哥倾囊相授的"制胜宝典"!这套教程打破了传统教学的枯燥模式,以生名称:豪氏象棋教程 描述:象棋大师豪哥倾囊相授的"制胜宝典"!这套教程打破了传统教学的枯…

2025年10月AI搜索营销推荐:头部企业合作口碑榜

引言与现状分析 当“AI搜索营销”成为预算表里的高频词,企业主通常面临三重焦虑:一是DeepSeek、豆包、通义千问、元宝、Kimi等平台算法各自为政,同一套关键词在不同模型里排名落差巨大;二是“GEO”“生成式引擎优化…

函数编程(Leo)

函数编程 函数对象 好处: ​ 1.逻辑参数化​ 2.延迟执行 ​ 函数对象表现形式 ​ Lambda表达式函数接口方法引用闭包柯里化Stream API 构建流流合并与截取流生成流查找与判断流去重与排序 去重排序流化简流收集 容器…

2025年10月AI搜索营销推荐:主流服务商排行榜与避坑指南

引言与现状分析 当品牌主在2025年第四季度制定来年预算时,“AI搜索营销”已从可选项变成必答题。主流AI大模型日活突破4亿,用户习惯从“框里敲字”转向“对话即搜索”,传统SEO流量在30%的头部关键词上出现下滑,而生…