首页 > 其他分享 >[ABC329C] Count xxx 题解

[ABC329C] Count xxx 题解

时间:2024-04-23 23:33:50浏览次数:25  
标签:Count int 题解 xxx len 字串 maxL 长度 最长

[ABC329C] Count xxx 题解

题目分析

目的:统计本质不同而不是位置不同的所有字符都相同的字串。

需要理解一下什么是本质不同而不是位置不同。结合样例1去理解这句话。

列举样例1中的所有所有组成字符相同的字串。

aaabaa

编号 字串 位置
\(1\) a \([1,1]\)
\(2\) aa \([1,2]\)
\(3\) aaa \([1,3]\)
\(4\) b \([4,4]\)
\(5\) a \([5,5]\)
\(6\) aa \([6,7]\)

其中,编号 \(1\) 与编号 \(5\),编号 \(2\) 与编号 \(6\) 都属于本质相同的字串。所以,所有位置不同的、组成内容相同的字串,最终只需要保留最长的那一个就好。对于一个长度为 \(k\) 的组成内容相同的字串来说, 存在长度为 \(1,2,\dots,k\) 的本质不同的字串,个数即它的长度。

最终,问题即可理解为求出所有字符构成的最长连号长度的总和。

代码实现

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
using i64 = long long;
int n;
char c[N];
int maxL[30];//maxL[i]:字母(i+'a')对应的最长连号长度
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> n;
  int len = 0;
  for (int i = 1; i <= n; i++) {
    cin >> c[i];
    if (c[i] == c[i - 1]) {//当前元素与前一个元素相同
      len++;//连号长度增加
    } else {
      len = 1;//不同时,开始新的连号
    }
    //更新当前元素对应的最长连号长度
    maxL[c[i]-'a'] = max(maxL[c[i]-'a'], len);
  }
  //本质不同的串就是最长连号的长度
  int ans = 0;
  for (int i = 0; i < 26; i++) {
    ans += maxL[i];//累加所有元素的最长连号长度
  }
  cout << ans;
  return 0;
}

标签:Count,int,题解,xxx,len,字串,maxL,长度,最长
From: https://www.cnblogs.com/wyloving/p/18154091

相关文章

  • [题解]ARC176 A~B
    赛时心态崩了,0pts遗憾离场……今天在学校冷静思考了下。发现B题思路其实很简单,不过A题怎么也没有想到,回来看了题解,其实思路也很简单,不过是自己思考方向错了。看来打比赛心态很重要,如果能冷静下来思考结果会好很多。果然算法竞赛不能被常理所束缚(笑)A-01MatrixAgain行列从\(0......
  • 题解 UOJ577【[ULR #1] 打击复读】
    题解UOJ577【[ULR#1]打击复读referencehttps://www.cnblogs.com/crashed/p/17382894.htmlhttps://www.cnblogs.com/sizeof127/articles/17579027.html字符串——黄建恒,广东实验中学题目描述为了提升搜索引擎的关键词匹配度以加大访问量,某些网站可能在网页中无意义复读大......
  • 编译用于Qt的opencv问题解决
    CMakewasunabletofindabuildprogramcorrespondingto"MinGWMakefiles"解释:这个错误表明CMake无法找到用于生成Makefiles的构建程序。在使用CMake生成项目文件时,如果指定了"MinGWMakefiles",CMake需要一个Make工具来构建项目,而这个工具通常是由MinGW提供的。如......
  • macOS配置Clion用于STM32开发找不到stdint.h等头文件问题解决方案
    问题编译工程时发现出现大量类似错误如下/opt/homebrew/Cellar/arm-none-eabi-gcc/13.2.0/lib/gcc/arm-none-eabi/13.2.0/include/stdint.h:9:16:fatalerror:stdint.h:Nosuchfileordirectory问题原因不能使用brewinstallarm-none-eabi-gcc安装编译工具链[1]解决方......
  • 「洛谷」题解:P1720 月落乌啼算钱(斐波那契数列)
    题目传送门比较经典的一道斐波那契数列的模版题,原题中给了一个很复杂的公式(也就是下面这个),但是实际上题目跟它毛关系没有……(所以放这个公式干什么)\[F_n=\dfrac{\left(\frac{1+\sqrt{5}}{2}\right)^n-\left(\frac{1-\sqrt{5}}{2}\right)^n}{\sqrt{5}}\]看见题解去了有很多人都......
  • AtCoder Beginner Contest 350 A - G 题解
    AtCoderBeginnerContest350A-PastABCsSolution把最后三个字符转成数字判断即可Code#include<bits/stdc++.h>usingnamespacestd;intmain(){strings;cin>>s;s=s.substr(3,3);intx=0;x=(s[0]-'0')*100+(s[1]-�......
  • ABC350C 题解
    怎么赛时连这道都不会了/ll注意到输入是个排列,这意味着我们可以直接确定每个元素应在的位置。考虑维护每个数当前所在的位置\(\{p\}\)。对于任意\(i\in[1,n]\),我们访问\(p_i\),如果该位置不为第\(i\)位便对排列中第\(i\)位的数\(j\)和\(i\)进行“交换”操作。“......
  • P1763 埃及分数 题解
    题目传送门【-1】前言这题的剪枝真的太妙了,很难想象巨佬是怎么独立想出来这所有的剪枝的。本题解没有包含所有的剪枝,只选了我认为最好理解的几条剪枝。想学习所有的剪枝的右转巨佬的题解。【1】本题大框架:迭代加深搜索(IDDFS)看到\(1<a<b<1000\),可以猜测分数的个数不会......
  • initialize方法重定向无限循环问题解决方案
    由于在initialize方法中进行重定向而造成的重定向循环。当session('?user_id')检查失败时,你的代码会尝试重定向到登录页面。如果登录页面或者处理登录的控制器也继承自同一个基类(或者有类似的initialize检查),这将导致每次尝试访问登录页面时都会再次执行重定向,从而陷入无限循......
  • helpdesk桌面运维常见问题解决
    helpdesk是一套帮助IT团队管理IT工单生命周期、自动化日常工作、优化工作流程的软件或软件集合,它可以帮助IT团队提高生产力、降低成本、改善服务水平和客户体验。 在现代企业中,helpdesk桌面运维是一项至关重要的工作,helpdesk团队负责处理员工或客户在日常工作中遇到的各种技术......