当前位置: 首页 > news >正文

语言月赛 202311【基因】题解(AC)

在这里插入图片描述
》》》点我查看「视频」详解》》》

[语言月赛 202311] 基因

题目描述

有一个长度为 n n n 的字符串 S S S。其只包含有大写字母。

小 A 将 S S S 进行翻转后,得到另一个字符串 S ′ S' S。两个字符串 S S S S ′ S' S 对应配对。例如说,对于 S = A T C G T S=\tt{ATCGT} S=ATCGT,则有 S ′ = T G C T A S'=\tt{TGCTA} S=TGCTA S S S S ′ S' S 进行配对。

对于两个字符串 S , S ′ S,S' S,S 的第 i i i 1 ≤ i ≤ n 1 \leq i \leq n 1in)个字母,配对规则如下:

  • 定义 A \tt A A T \tt T T C \tt C C G \tt G G 为可以配对的字母。
  • 如果 S i S_i Si S i ′ S_i' Si 为可以配对的字母,那么该字符串的稳定性增加 i i i
  • 如果 S i S_i Si 或者 S i ′ S_i' Si 中任意一方出现非 A , T , C , G \tt A,\tt T,\tt C,\tt G A,T,C,G 的字母,则整个字符串的稳定性将直接为 0 0 0

现在给定 T T T 个字符串 S S S,对每一个字符串,询问若用其翻转再进行配对,其稳定性将如何。

输入格式

第一行输入一个正整数 T T T,表示给定多少个字符串。对于每一个字符串:

  • 第一行输入一个正整数 n n n,表示字符串的长度;
  • 第二行输入一个字符串 S S S,表示该字符串。

输出格式

对于每个字符串,输出一行一个整数,表示若用其翻转再进行配对,其稳定性将如何。

样例 #1

样例输入 #1

3
5
ATCGT
6
ACATGT
5
ATCGU

样例输出 #1

6
21
0

提示

【样例解释】

  • 对于第一个字符串, S = A T C G T S=\tt{{A}TCG{T}} S=ATCGT S ′ = T G C T A S'=\tt{{T}GCT{A}} S=TGCTA。标红色的一组与蓝色的一组为可以配对的字母。它们分别是 S S S 的第 1 1 1 个字母和第 5 5 5 个字母,因此稳定性是 1 + 5 = 6 1+5=6 1+5=6
  • 对于第二个字符串, S = A C A T G T S=\tt{{A}{C}{A}{T}{G}{T}} S=ACATGT S ′ = T G T A C A S'=\tt{{T}{G}{T}{A}{C}{A}} S=TGTACA,每个对应位置上的字母都可以配对,因此稳定性是 1 + 2 + 3 + ⋯ + 6 = 21 1+2+3+\dots+6=21 1+2+3++6=21
  • 对于第三条字符串,出现了非 A , T , C , G \tt A,\tt T,\tt C,\tt G A,T,C,G 的字母 U \tt U U,因此稳定性为 0 0 0

【数据范围】

对于所有数据,保证: 1 ≤ T ≤ 5 1\leq T\leq 5 1T5 1 ≤ n ≤ 1 0 5 1\leq n\leq 10^5 1n105 S S S 中出现的所有字母保证为大写英语字母。

AC_Code

#include <bits/stdc++.h>
using namespace std;bool check1(char a)
{if(a != 'A' && a != 'T' && a != 'C' && a != 'G')return false;return true;
}bool check2(char a, char b)
{if(a == 'T' && b == 'A') return true;if(a == 'A' && b == 'T') return true;if(a == 'C' && b == 'G') return true;if(a == 'G' && b == 'C') return true;return false;
}int main()
{int t;cin >> t;while(t --){int n;string s1;cin >> n >> s1;string s2 = s1;reverse(s2.begin(), s2.end());long long tot = 0;for(int i = 0; i < s1.size(); i ++){if(!check1(s1[i]) || !check1(s2[i])){tot = 0;break;}if(check2(s1[i], s2[i]))tot += i + 1;}cout << tot << "\n";}return 0;
}

》》》点我查看「视频」详解》》》

http://www.lryc.cn/news/532705.html

相关文章:

  • unity学习26:用Input接口去监测: 鼠标,键盘,虚拟轴,虚拟按键
  • GB/T 43698-2024 《网络安全技术 软件供应链安全要求》标准解读
  • ASP.NET Core与EF Core的集成
  • 【AI大模型】Ubuntu18.04安装deepseek-r1模型+服务器部署+内网访问
  • SpringAI系列 - 使用LangGPT编写高质量的Prompt
  • Github - 记录一次对“不小心包含了密码的PR”的修复
  • 【玩转 Postman 接口测试与开发2_014】第11章:测试现成的 API 接口(下)——自动化接口测试脚本实战演练 + 测试集合共享
  • 前后端通过docker部署笔记
  • 五十天精通硬件设计第四天-场效应管知识及选型
  • 了解 ALV 中的 field catalog (ABAP List Viewer)
  • 【基于SprintBoot+Mybatis+Mysql】电脑商城项目之修改密码和个人资料
  • 十一、CentOS Stream 9 安装 Docker
  • FreeRTOS学习 --- 中断管理
  • 如何在Intellij IDEA中识别一个文件夹下的多个Maven module?
  • 机器学习模型--线性回归、逻辑回归、分类
  • gitlab个别服务无法启动可能原因
  • react的antd表格数据回显在form表单中
  • 深度分析:网站快速收录与网站内容多样性的关系
  • feign 远程调用详解
  • 【Android】jni开发之导入opencv和libyuv来进行图像处理
  • 【Elasticsearch】terms聚合误差问题
  • 深入理解 `box-sizing: border-box;`:CSS 布局的利器
  • 【原子工具】快速幂 快速乘
  • Apache SeaTunnel 整体架构运行原理
  • Nginx如何实现 TCP和UDP代理?
  • 蓝桥杯思维训练营(三)
  • 开箱即用的.NET MAUI组件库 V-Control 发布了!
  • 动手学图神经网络(9):利用图神经网络进行节点分类 WeightsBiases
  • 【文件上传、秒传、分片上传、断点续传、重传】
  • 使用Pygame制作“打砖块”游戏