【思维构造】Dominant Character—CF1605C

Dominant Character—CF1605C

思路

  1. 若字符串中存在相邻的 a 字符,即存在 aa 子串。输出 2 2 2
  2. 若字符串中不存在相邻的 a 字符。那么满足条件的子串的格式一定是 a + xx + a + ... + a + xx + a,其中 xx 代表由 bc 组成的字符串。那么显然可以对 a 的数量分类讨论。注意两个相邻的 a 直接的字符个数只能是 2 2 2,否则一定会出现 bc 的个数大于等于 a 的个数的情况。
    1. 如果 a 数量为 2 2 2,所有可能的情况为: abaacaabcaacba。可以通过暴力在 s s s 字符串中找出。
    2. 如果 a 数量为 3 3 3,所有可能的情况为: abbaccaaccabba(这里已经排除了能被分类到 2.1 中的情况例如 abbacca)。同样可以通过暴力找出。
    3. 如果 a 数量大于等于 4 4 4。排除能分类到 2.1 的情况,所以字符串中的 xx 不能是 bccb;排除能分类到 2.2 的情况,所以字符串中不能出现 abbaccaaccabba 子串,所以一个字符串中的所有 xx 只能全是 bb 或全是 cc,而这样的字符串一定是不满足 “a 的个数大于 b 的个数和 c 的个数”,所以不存在满足 2.3 情况的字符串。

综上,满足条件的子串有:aaabaacaabcaacbaabbaccaaccabba

C o d e Code Code

#include <bits/stdc++.h>
#define int long long
#define sz(a) ((int)a.size())
#define all(a) a.begin(), a.end()
using namespace std;
using PII = pair<int, int>;
using i128 = __int128;
const int N = 2e5 + 10;int n;void solve() {cin >> n;string s; cin >> s;s = " " + s;cout << "          ";// aafor (int l = 1; l + 1 <= n; l ++) {if (s[l] == 'a' and s[l + 1] == 'a') {cout << "2\n";return;}}// aca acafor (int l = 1; l + 2 <= n; l ++) {if (s[l] == 'a' && s[l + 2] == 'a') {cout << "3\n";return;}}// abca acbafor (int l = 1; l + 3 <= n; l ++) {string ss = s.substr(l, 4);if (ss == "abca" || ss == "acba") {cout << "4\n";return;}}// abbacca accabbafor (int l = 1; l + 6 <= n; l ++) {string ss = s.substr(l, 7);if (ss == "abbacca" || ss == "accabba") {cout << "7\n";return;}}cout << "-1\n";
}signed main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int T = 1;cin >> T; cin.get();while (T --) solve();return 0;
}

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

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

相关文章

什么是广电入库

什么是广电入库 入库&#xff0c;就意味着该节目在广播电视媒体机构可随时随地被调用&#xff0c;可任意安排播出时间和播出频率。入库的节目可实现一次制作&#xff0c;无限次使用&#xff0c;大大提高节目制作效率。同时&#xff0c;入库的节目因为具有统一的标准和规范&…

使用poi-tl循环导出word报表

先看模板和导出的效果 模板 效果 根据模板循环生成表格&#xff0c;每个表格再循环填充数据&#xff0c;也就是两层循环&#xff0c;第一层循环是学生学期信息&#xff0c;第二层循环是学生的成绩数据。 第一个循环 {{?listTable}} {{/}}第二个循环 {{reportList}} 表格…

Python 何时传的是值,何时传的是引用?

在 Python 中&#xff0c;参数的传递方式可以是传值&#xff08;pass by value&#xff09;或传引用&#xff08;pass by reference&#xff09;。然而&#xff0c;实际上 Python 中的参数传递方式是通过对象的引用进行传递。简单来说&#xff0c;当传递不可变对象时&#xff0…

KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(4)

接前一篇文章:KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(3) 上一回讲解了drm_mode_addfb2函数中的第一步暨第一个函数drm_core_check_feature。本回继续对于drm_mode_addfb2函数往下进行解析。为了便于理解,再次贴出其代码,在drivers/gpu/drm/drm_framebuffe…

电脑图片jpeg怎么转jpg格式?jpeg和jpg的转换方法

很多平台对上传的图片格式都有严格的要求&#xff0c;当我们遇到图片格式不对的时候&#xff0c;就需要改图片格式了&#xff0c;下面以jpeg转jpg&#xff08;在线图片格式转换器&#xff08;jpg、png、gif、webp、bmp、tiff&#xff09;-压缩图&#xff09;为例子&#xff0c;…

SpringBoot项目整合

一、创建项目 IDEA中采用spring initialzer...创建&#xff0c;jdk选择8&#xff0c;maven,jar。。。springboot版本2.5.0&#xff08;稳定&#xff09; 项目依赖&#xff1a; 二、项目结构&#xff1a; 原始pom.xml文件 <?xml version"1.0" encoding"UT…

Android网络监听

1.通过注册BroadCastReceiver进行网络监听。 1) 添加网络权限 <uses-permission android:name"android.permission.INTERNET"/><uses-permission android:name"android.permission.ACCESS_NETWORK_STATE" /> 2&#xff09;定义BroadCastRe…

tcpdump(五)命令行参数讲解(四)

一 案例讲解 tcpdump官方参考文档 最全的tcpdump手册 强调&#xff1a; -nn 选项一般是must 必选 ① 现场分析并保留现场信息 tcpdump -l | tee dat 使用tee来把tcpdump的输出同时放到文件dat和标准输出中场景&#xff1a; 自己现场分析同时把现场信息保留下来 ② …

朋友圈一键转发(可修改文案),无需多个账号复制粘贴

相信很多人手上都有不止一个微信&#xff0c;每次发个朋友圈都要在多个账号切换&#xff0c;重复发送&#xff0c;好不麻烦。而一些朋友想要一键跟随转发朋友圈&#xff0c;却总是需要一个个复制粘贴&#xff0c;麻烦而且容易漏发。 那实现朋友圈一键跟随转发&#xff0c;无需多…

wifi管理软件 WiFi Signal mac中文介绍

WiFi Signal mac是一款WiFi信号强度监测工具&#xff0c;它可以帮助用户实时监测WiFi信号的强度、频率、噪声等信息&#xff0c;并提供详细的图表和统计数据。 WiFi Signal可以自动扫描附近的WiFi网络&#xff0c;并显示它们的信号强度和频率。用户可以通过WiFi Signal来找到最…

ES知识点全面整理

● 我们从很多年前就知道 ES6, 也就是官方发布的 ES2015 ● 从 2015 年开始, 官方觉得大家命名太乱了, 所以决定以年份命名 ● 但是大家还是习惯了叫做 ES6, 不过这不重要 ● 重要的是, ES6 关注的人非常多, 大家也会主动去关注 ● 但是从 2016 年以后, 每年官方都会出现新…

lua 如何在嵌入式Linux中与c语言结合

在嵌入式Linux中&#xff0c;可以使用Lua语言来扩展C语言应用程序的功能。具体而言&#xff0c;Lua可以被嵌入到C语言应用程序中&#xff0c;以便通过Lua脚本文件调用C语言函数或库。下面是一些步骤&#xff1a; 在嵌入式Linux中安装Lua库 可以使用apt-get、yum等命令从Linux…

阿里8年经验之谈 —— 如何编写有效的接口测试?

阿里妹导读&#xff1a;在所有的开发测试中&#xff0c;接口测试是必不可少的一项。有效且覆盖完整的接口测试&#xff0c;不仅能保障新功能的开发质量&#xff0c;还能让开发在修改功能逻辑的时候有回归的能力&#xff0c;同时也是能优雅地进行重构的前提。编写接口测试要遵守…

react管理系统layOut简单搭建

一、新建立react文件夹&#xff0c;生成项目 npx create-react-app my-app cd my-app npm start 二、安装react-router-dom npm install react-router-dom 三、安装Ant Design of React&#xff08;UI框架库&#xff0c;可根据需求进行安装&#xff09; npm install antd …

基于DeOldify的给黑白照片、视频上色

老照片常常因为当时的技术限制而只有黑白版本。然而现代的 AI 技术&#xff0c;如 DeOldify&#xff0c;可以让这些照片重现色彩。 本教程将详细介绍如何使用 DeOldify 来给老照片上色。 文章目录 准备工作执行代码图片上色视频上色 总结 准备工作 这里用 git clone 命令克隆…

利用R语言进行生态环境数据的可视化分析:方法和实践

R语言是一种用于统计分析、绘图的语言和操作环境&#xff0c;属于GNU系统的一个自由、免费、开源的软件&#xff0c;它是一个用于统计计算和统计制图的优秀工具1。 R是由Ross Ihaka和Robert Gentleman在1993年开发的一种编程语言&#xff0c;拥有广泛的统计和图形方法目录&…

16个最佳Chrome插件推荐给做前端的你

作为Web开发人员每天的工作就是不断地开发、测试、优化&#xff0c;涉及到语言、布局、字体、样式等技术。整个开发过程离不开浏览器。浏览器插件就像是浏览器的“装备”&#xff0c;可以增加浏览器额外的特性和功能。针对开发人员的日常工作&#xff0c;有些浏览器插件非常实用…

基于R语言的水文、水环境模型优化技术及快速率定方法

【阅读原文】&#xff1a;基于R语言的水文、水环境模型优化技术及快速率定方法与多模型案例实践 【内容简介】&#xff1a; 专题一、最速上升法、岭分析以及响应曲面模型 1.最速上升路径 2.信赖域 3.响应面模型 4.二阶响应面 5.岭分析 专题二、Kriging插值与优化方法 …

POJ 3481:双端队列 ← 数组模拟

【题目来源】http://poj.org/problem?id3481【题目描述】 某银行的业务处理系统原理如下。 初始时&#xff0c;待处理业务队列&#xff08;简称为队列&#xff09;为空。 接下来&#xff0c;系统会收到一系列的请求&#xff0c;请求分为以下四种&#xff1a; ● 0&#xff0c;…

TensorFlow入门(十八、激活函数)

激活函数是什么? 单个神经元的网络模型: 用计算公式表达如下: 即在神经元中,输入的x通过与权重w相乘,与偏置量b求和后,还被作用了一个函数,这个函数就是激活函数。 激活函数的作用 如果没有激活函数,整个神经元模型就是一个简单的线性方程。而在现实生活中,线性方程能解决的事…