正题

题目链接:https://jzoj.net/senior/#main/show/3798


题目大意

长度为nnn的字符串,求有多少个子串中ABCABCABC数量相等。


解题思路

方法好像很巧妙,用Si,A/B/CS_{i,A/B/C}Si,A/B/C​表示到第iii个时A/B/CA/B/CA/B/C的数量。

然后Sr,A−Sl,A=Sr,B−Sl,B=Sr,C−Sl,CS_{r,A}-S_{l,A}=S_{r,B}-S_{l,B}=S_{r,C}-S_{l,C}Sr,A​−Sl,A​=Sr,B​−Sl,B​=Sr,C​−Sl,C​
Sr,A−Sl,A=Sr,B−Sl,B,Sr,A−Sl,A=Sr,C−Sl,CS_{r,A}-S_{l,A}=S_{r,B}-S_{l,B},S_{r,A}-S_{l,A}=S_{r,C}-S_{l,C}Sr,A​−Sl,A​=Sr,B​−Sl,B​,Sr,A​−Sl,A​=Sr,C​−Sl,C​
⇒\Rightarrow⇒
Sr,A−Sr,B=Sl,A−Sl,B,Sr,A−Sr,C=Sl,A−Sl,CS_{r,A}-S_{r,B}=S_{l,A}-S_{l,B},S_{r,A}-S_{r,C}=S_{l,A}-S_{l,C}Sr,A​−Sr,B​=Sl,A​−Sl,B​,Sr,A​−Sr,C​=Sl,A​−Sl,C​
定义cnti=(Sr,A−Sr,B)∗N+(Sr,A−Sr,C)cnt_i=(S_{r,A}-S_{r,B})*N+(S_{r,A}-S_{r,C})cnti​=(Sr,A​−Sr,B​)∗N+(Sr,A​−Sr,C​)然后看有多少个相同的就好了。


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e6+10;
long long n,sum[N][3],cnt[N],ans;
char s[N];
int main()
{scanf("%s",s+1);n=strlen(s+1);for(int i=1;i<=n;i++){sum[i][0]=sum[i-1][0];sum[i][1]=sum[i-1][1];sum[i][2]=sum[i-1][2];if(s[i]<='C')sum[i][s[i]-'A']++;cnt[i]=(sum[i][2]-sum[i][1])*N+sum[i][1]-sum[i][0];}sort(cnt,cnt+1+n);for(int i=0,j=0;j+1<=n;i=++j){while(j<n&&cnt[i]==cnt[j+1]) j++;ans+=1ll*(j-i+1)*(j-i)/2ll;}printf("%lld",ans);
}

jzoj3798-[NOIP2014模拟8.22]临洮巨人【前缀和】相关推荐

  1. JZOJ 3885. 【长郡NOIP2014模拟10.22】搞笑的代码

    Description 在OI界存在着一位传奇选手--QQ,他总是以风格迥异的搞笑代码受世人围观 某次某道题目的输入是一个排列,他使用了以下伪代码来生成数据 while 序列长度< n do { ...

  2. JZOJ 3886. 【长郡NOIP2014模拟10.22】道路维护

    Description 最近徆多人投诉说C国的道路破损程度太大,以至亍无法通行 C国的政府徆重视这件事,但是最近财政有点紧,丌可能将所有的道路都进行维护,所以他们决定按照下述方案进行维护 将C国抽象成 ...

  3. 【JZOJ3885】【长郡NOIP2014模拟10.22】搞笑的代码

    ok 在OI界存在着一位传奇选手--QQ,他总是以风格迥异的搞笑代码受世人围观 某次某道题目的输入是一个排列,他使用了以下伪代码来生成数据 while 序列长度<n do { 随机生成一个整数属 ...

  4. {题解}[jzoj3885]【长郡NOIP2014模拟10.22】搞笑的代码

    传送门 Analysis 其实吧 出题人已经够友善啦 出题人已经把方程给了 我们尝试写出来 设f(i)为生成i排列的期望次数 设f(i)为生成i排列的期望次数 f(i)=[(f(i−1)+1)∗n−i ...

  5. jzoj2702. 探险jzoj3917. 【NOIP2014模拟11.2A组】福慧双修

    Description 探险家小T好高兴!X国要举办一次溶洞探险比赛,获奖者将得到丰厚奖品哦!小T虽然对奖品不感兴趣,但是这个大振名声的机会当然不能错过! 比赛即将开始,工作人员说明了这次比赛的规则: ...

  6. JZOJ 6481. 【GDOI2020模拟02.22】黎曼几何(矩阵乘法)

    JZOJ 6481. [GDOI2020模拟02.22]黎曼几何 题解 设fn,1f_{n,1}fn,1​和fn,2f_{n,2}fn,2​分别表示将nnn个硬币移动111格和222格的最小步数, 推 ...

  7. 2016.7.15 NOIP2014模拟试题解题报告(又名:方克顺和他的正余弦朋友们(

    我发现自从我开始写博客以后OI成绩上升很明显啊orzzz,继续保持继续保持(然而昨晚上开夜车到十二点,感觉这次没发挥好)(下次没考好就尴尬了)(所以一定要考好!),嗯这次考得还是很不错的,也深入思考了 ...

  8. JZOJ 4467【GDOI2016模拟4.22】数字方阵

    Description Anica 做了一个很奇怪的梦:她梦见了一个无限大的平板,平板上填着无限行和无限列的整数.有趣的是,每个整数在那神奇的平板上只出现有限的次数. 机智的Anica很快便发现了这其 ...

  9. JZOJ 5878. 【NOIP2018提高组模拟9.22】电路图 A

    Description nodgd 要画一个电路图. 这是一个很简单的电路图,所有的元件都是串联关系,从整体来看就是一个环状的结构.画电路图有很多要求,nodgd 为了画得好看就又添加了一些 额外的要 ...

最新文章

  1. RDKit | 基于多片段的分子生成(骨架A+骨架B+骨架C)
  2. GetCurSel总结
  3. 《统一沟通-微软-实战》-6-部署-2-中介服务器-6-语音路由-路由
  4. [云炬创业基础笔记]第四章测试23
  5. 非对称性密钥加密 java 实例_JAVA实现非对称加密
  6. Ubuntu系统目录结构
  7. thinkphp日志泄漏漏洞_ThinkPHP框架任意代码执行漏洞的利用及其修复方法
  8. linux源码安装 rpm命令
  9. find 命令详解 基于文件大小,名字和权限等的查找策略以及-path和-prune的详细解释
  10. 密码学基础(五):常见名词解释和密码学标准
  11. 基于SSM框架和easyUI框架的简易人事管理系统(六)
  12. 无法实现的梦想:孤独之旅计划
  13. 电力电缆2021年考试题库
  14. a5松下驱动器参数设置表_「精品干货」松下A5伺服驱动器参数设置与常见故障解决分析...
  15. Tomcat组件梳理—Digester的使用
  16. 你知道项目管理有哪些分类和体系吗?
  17. B/S网页在线版仓库管理软件的意义何在
  18. SSLv3 协议漏洞‘POODLE’修复与相关概念
  19. 新一代消息中间件—Apache Pulsar
  20. BIM技术在家装中有5大应用,您知道吗?

热门文章

  1. lumen 配置数据库结果自动转数组_lumen 数据库操作 Cannot use object of type stdClass as array...
  2. echart 地图 某个地区_中国饮食地图来袭!你爱的口味暗藏健康隐患吗?
  3. ubuntu安装mysql_Ubuntu18.04下安装MySQL
  4. vim 寄存器 操作_vim指令
  5. infor wms 项目启动_广汽本田增城工厂No.2L WMS项目正式启动
  6. [JavaWeb-XML]XML_快捷查询方式(selector选择器,XPath)
  7. [JavaWeb-JavaScript]JavaScript运算符
  8. 假设一动态集合S用一个长度为m的直接寻址表T来表示。请给出一个查找S中最大元素的过程。(算法导论第十一章11.1-1)
  9. RGB转YUV420
  10. 聊一聊顺序消息(RocketMQ顺序消息的实现机制)