【AcWing寒假每日一题2023】Day1——孤独的照片

news/2025/1/11 21:58:06/

目录

  • 问题描述
  • 思路与代码

问题描述

原题链接🔗:4261. 孤独的照片

Farmer John 最近购入了 NNN 头新的奶牛,每头奶牛的品种是更赛牛(Guernsey)或荷斯坦牛(Holstein)之一。

奶牛目前排成一排,Farmer John 想要为每个连续不少于三头奶牛的序列拍摄一张照片。

然而,他不想拍摄这样的照片,其中只有一头牛的品种是更赛牛,或者只有一头牛的品种是荷斯坦牛——他认为这头奇特的牛会感到孤立和不自然。

在为每个连续不少于三头奶牛的序列拍摄了一张照片后,他把所有「孤独的」照片,即其中只有一头更赛牛或荷斯坦奶牛的照片,都扔掉了。

给定奶牛的排列方式,请帮助 Farmer John 求出他会扔掉多少张孤独的照片。

如果两张照片以不同位置的奶牛开始或结束,则认为它们是不同的。

输入格式
输入的第一行包含 NNN

输入的第二行包含一个长为 NNN 的字符串。如果队伍中的第 iii 头奶牛是更赛牛,则字符串的第 iii 个字符为 G。否则,第 iii 头奶牛是荷斯坦牛,该字符为 H

输出格式
输出 Farmer John 会扔掉的孤独的照片数量。

数据范围
3≤N≤5×1053≤N≤5×10^53N5×105

输入样例:

5
GHGHG

输出样例:

3

样例解释
这个例子中的每一个长为 333 的子串均恰好包含一头更赛牛或荷斯坦牛——所以这些子串表示孤独的照片,并会被 Farmer John 扔掉。

所有更长的子串(GHGHHGHGGHGHG)都可以被接受。

思路与代码

根据题意可知,从中任意选取一个长度大于等于 333 的子串,若其中某一个字母只出现了一次,则该子串(照片)需要被扔掉。当然,不可能两个字母都只出现一次,否则子串的长度将为 222,与题意不符。

对于长度为 NNN 的字符串中的某一位置,不妨设为 GGG,我们来计算它可以构成多少张孤独的照片。首先计算 GGG 的左右两边各有多少个 HHH

H⋯H⏟L个GH⋯H⏟R个\underbrace{H\cdots H}_{L个} G \underbrace{H\cdots H}_{R个} LHHGRHH

其中 L≥0,R≥0L\geq 0,R\geq 0L0,R0。我们来看该子串含有多少张孤独的照片,分以下三种情况考虑:

  • GGG 的左右两边都至少含有一个 HHH,那么满足条件的子串共有 L⋅RL\cdot RLR 个;
  • GGG 的左边至少含有一个 HHH,右边没有 HHH,那么满足条件的子串共有 L−1L-1L1个;
  • GGG 的右边至少含有一个 HHH,左边没有 HHH,那么满足条件的子串共有 R−1R-1R1个;

将以上三种结果相加即为该位置可构成的孤独的照片的数量:LR+L−1+R−1LR+L-1+R-1LR+L1+R1

例如,取 L=2,R=3L=2,R=3L=2,R=3,则 HHGHHHHHGHHHHHGHHH 一共有 2⋅3+2−1+3−1=92\cdot 3+2-1+3-1=923+21+31=9 种孤独的照片,它们分别是:

HGH,HGHH,HGHHH,HHGH,HHGHH,HHGHHHHHGGHH,GHHHHGH, HGHH, HGHHH, HHGH, HHGHH, HHGHHH \\ HHG \\ GHH, GHHH HGH,HGHH,HGHHH,HHGH,HHGHH,HHGHHHHHGGHH,GHHH

当然,我们还需考虑特殊情形,例如当 L=0,R>0L=0,R>0L=0,R>0 时(L>0,R=0L>0,R=0L>0,R=0 时同理),此时 GGG 可构成的孤独的照片的数量为 R−1R-1R1,如果使用原来的式子计算,将会得到:0⋅R+0−1+R−1=R−20\cdot R+0-1+R-1=R-20R+01+R1=R2,不符,因此需要做一个纠正:

LR+max⁡(L−1,0)+max⁡(R−1,0)LR+\max(L-1,0)+\max(R-1,0) LR+max(L1,0)+max(R1,0)

将所有位置可构成的孤独的照片的数量相加即可得到本题答案:

∑i=0N−1l[i]∗r[i]+max⁡(l[i]−1,0)+max⁡(r[i]−1,0)\sum_{i=0}^{N-1}l[i]*r[i]+\max(l[i]-1,0)+\max(r[i]-1,0) i=0N1l[i]r[i]+max(l[i]1,0)+max(r[i]1,0)

其中 lr 分别是两个数组,l[i] 代表的是第 i 个位置左边有多少个连续字母与当前位置上的字母不相同,r[i] 则代表第 i 个位置右边有多少个连续字母与当前位置上的字母不相同。

代码如下:

#include <iostream>using namespace std;const int N = 5e5 + 10;
typedef long long LL;int n;
char str[N];
int l[N], r[N];int main() {cin >> n >> str;for (int i = 0, h = 0, g = 0; i < n; i++) {if (str[i] == 'G') l[i] = h, h = 0, g++;else l[i] = g, g = 0, h++;}for (int i = n - 1, h = 0, g = 0; i >= 0; i--) {if (str[i] == 'G') r[i] = h, h = 0, g++;else r[i] = g, g = 0, h++;}LL res = 0;for (int i = 0; i < n; i++)res += (LL) l[i] * r[i] + max(l[i] - 1, 0) + max(r[i] - 1, 0);cout << res << endl;return 0;
}

http://www.ppmy.cn/news/7230.html

相关文章

京东零售大数据云原生架构实践

通常谈到大数据&#xff0c;想到的是大数据平台、Hadoop生态或者数据湖技术&#xff0c;关注于大数据存储、大数据计算方向上的技术发展与应用&#xff1b;谈到云原生&#xff0c;想到的是微服务架构、容器化或者SRE&#xff08;Site Reliability Engineer&#xff09;运维范畴…

易基因|深度综述:癌症中RNA修饰机制的遗传和表观遗传失调(m6A+m1A+m5C+ψ)

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 2022年11月12日&#xff0c;《Trends Genet》杂志发表了题为“Genetic and epigenetic defects of the RNA modification machinery in cancer”的综述文章&#xff0c;讨论了m6A、m5C、…

基于SpringBoot工程开发Docker化微服务

目录 1. 微服务容器化治理的优缺点 1.1 微服务容器化的优点 1.2 微服务容器化的缺点 2. 微服务的两种模式 2.1 Microservice SDK 2.2 ServiceMesh 3. 微服务容器化治理的推荐模式 4.Windows下开发容器化微服务&#xff08;非K8S&#xff09; 4.1 开发环境 4.2 代码框架…

云端办公后,协同软件也能轻松做好项目管理

最近很多朋友在后台问我&#xff0c;数字化移动办公环境下如何做好项目管理&#xff0c;但是问题不够聚焦&#xff0c;所以我决定从自己的理解出发&#xff0c;分享一下项目管理的一些心得。需要说明的是&#xff0c;传统项目管理和互联网项目管理存在很大的差异&#xff0c;尤…

Mybatis源码(三)如何操作数据库

前言 接着environmentElement获取数据源信息后&#xff0c;同级执行代码的mappersElement。里面参杂了mybatis缓存。 Mybatis源码&#xff08;三&#xff09;如何操作数据库 MyBatis源码&#xff08;二&#xff09;如何执行sql Mybatis源码&#xff08;一&#xff09;获取数…

【区块链 | EVM】深入理解学习EVM - 深入理解EVM操作码,让你写出更好的智能合约

那些非典型的开销导致经典的软件设计模式在合约编程语言中看起来既低效又奇怪。如果想要识别这些模式并理解他们导致效率变高/低的原因&#xff0c;你必须首先对以太坊虚拟机&#xff08;即 EVM&#xff09;有一个基本的了解。 你的一些编程“好习惯”反而会让你写出低效的智能…

深入学习Vue.js(一)Vue.js的设计思路

文章目录1.命令式和声明式2.性能3.运行时和编译时4.声明式地描述UI5.将虚拟DOM渲染为真实DOM1.命令式和声明式 视图层框架通常分为命令式和声明式。 &#xff08;1&#xff09;命令式 ​ jQuery就是一种典型的命令式框架&#xff0c;该类框架的特点是关注过程。即代码描述的是…

面试官:系统需求多变时如何设计?

面试官&#xff1a;我想问个问题哈&#xff0c;项目里比较常见的问题 面试官&#xff1a;我现在有个系统会根据请求的入参&#xff0c;做出不同动作。但是&#xff0c;这块不同的动作很有可能是会发生需求变动的&#xff0c;这块系统你会怎么样设计&#xff1f; 面试官&#…