怎么看网站是否被收录,wordpress 替换google字体,石狮网站建设哪家好,网页游戏网络游戏》》》点我查看「视频」详解》》》
[语言月赛 202311] 基因
题目描述
有一个长度为 n n n 的字符串 S S S。其只包含有大写字母。
小 A 将 S S S 进行翻转后#xff0c;得到另一个字符串 S ′ S S′。两个字符串 S S S 与 S ′ S S′ 对应配对。例如说#xff0c;对… 》》》点我查看「视频」详解》》》
[语言月赛 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} SATCGT则有 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 1≤i≤n个字母配对规则如下
定义 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}} SATCGT 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 156 156。对于第二个字符串 S A C A T G T S\tt{{A}{C}{A}{T}{G}{T}} SACATGT S ′ T G T A C A S\tt{{T}{G}{T}{A}{C}{A}} S′TGTACA每个对应位置上的字母都可以配对因此稳定性是 1 2 3 ⋯ 6 21 123\dots621 123⋯621对于第三条字符串出现了非 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 1≤T≤5 1 ≤ n ≤ 1 0 5 1\leq n\leq 10^5 1≤n≤105 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;
}》》》点我查看「视频」详解》》》