CF1494A ABC String 题解
Content
给定 \(T\) 个仅包含大写字母 A
,B
,C
的字符串 \(s\)。问你是否能够通过将每个 A
,B
,C
换成 (
,)
中的一个(同一个字母必须要换成同一个字符),使得最后得到的括号序列能够完全匹配。
数据范围:\(1\leqslant t\leqslant 10^3\),\(2\leqslant |s|\leqslant 50\)。
Solution
不愧是 bruteforces,开头第一题就来暴力。
我的想法是直接枚举每个字母换成左括号还是右括号。排除全是左括号和全是右括号的情况以后,得到的就只有 \(6\) 种情况:
A | B | C | |
---|---|---|---|
1 | ( | ( | ) |
2 | ( | ) | ( |
3 | ( | ) | ) |
4 | ) | ( | ( |
5 | ) | ( | ) |
6 | ) | ) | ( |
拿这六种情况一一代入原字符串里面中,只要有一种情况能够将原字符串变换之后的括号序列能够完全匹配就是 YES
,如果六种情况全部都不能匹配就是 NO
。
感觉没人比我更暴力了(
Code
std :: map<char, int> vis;
inline bool check(std :: string s) {
std :: stack<char> q; int lens = s.size();
F(i, 0, lens - 1) {
if(s[i] == '(') q.push(s[i]);
else {
if(q.empty()) return 0;
q.pop();
if(q.empty() && s[i + 1] == ')') return 0;
}
}
return q.empty();
}
int main() {
//freopen(".in", "r", stdin);
//freopen(".out", "w", stdout);
MT {
vis.clear();
crstr(s, len);
std :: string tmp = s;
F(i, 0, len - 1) {
if(s[i] == 'A' || s[i] == 'B') s[i] = '(';
else s[i] = ')';
}
if(check(s)) {puts("Yes"); continue;}
s = tmp;
F(i, 0, len - 1) {
if(s[i] == 'A' || s[i] == 'C') s[i] = '(';
else s[i] = ')';
}
if(check(s)) {puts("Yes"); continue;}
s = tmp;
F(i, 0, len - 1) {
if(s[i] == 'A') s[i] = '(';
else s[i] = ')';
}
if(check(s)) {puts("Yes"); continue;}
s = tmp;
F(i, 0, len - 1) {
if(s[i] == 'A') s[i] = ')';
else s[i] = '(';
}
if(check(s)) {puts("Yes"); continue;}
s = tmp;
F(i, 0, len - 1) {
if(s[i] == 'A' || s[i] == 'C') s[i] = ')';
else s[i] = '(';
}
if(check(s)) {puts("Yes"); continue;}
s = tmp;
F(i, 0, len - 1) {
if(s[i] == 'A' || s[i] == 'B') s[i] = ')';
else s[i] = '(';
}
if(check(s)) puts("Yes");
else puts("No");
}
return 0;
}
CF1494A ABC String 题解的更多相关文章
- AtCoder ABC 242 题解
AtCoder ABC 242 题解 A T-shirt 排名前 \(A\) 可得 T-shirt 排名 \([A+1,B]\) 中随机选 \(C\) 个得 T-shirt 给出排名 \(X\) ,求 ...
- [LeetCode] Decode String 题解
题目 题目 s = "3[a]2[bc]", return "aaabcbc". s = "3[a2[c]]", return " ...
- 多校第十场1009 CRB and String题解
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5414 题意:给你两个字符串s和t,你能够在字符串s中随意选一个字符c,在该字符c后插入一个字符d(d! ...
- csp-s模拟测试b组加餐antipalindome,randomwalking,string题解
题面:https://www.cnblogs.com/Juve/articles/11599318.html antipalindome: 打表找规律? 对于一个回文串,我们只要保证3位以内不回文即可 ...
- HDU3336 Count the string 题解 KMP算法
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3336 题目大意:找出字符串s中和s的前缀相同的所有子串的个数. 题目分析:KMP模板题.这道题考虑 n ...
- CF23A You're Given a String... 题解
Content 给定一个长度为 \(n\) 的字符串,求出至少出现两次的最长子串的长度. 数据范围:\(1\leqslant n\leqslant 100\). Solution 我们直接暴力求出每个 ...
- @atcoder - AGC036E@ ABC String
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个仅由 A, B, C 组成的字符串 S. 求 S 的一个 ...
- Codeforces #698 (Div. 2) E. Nezzar and Binary String 题解
中文题意: 给你两个长度为 \(n\) 的01串 \(s,f,\)有 \(q\) 次询问. 每次询问有区间 \([\ l,r\ ]\) ,如果 \([\ l,r\ ]\) 同时包含\(0\)和\(1\ ...
- CF1440A Buy the String 题解
Content 有 \(t\) 组询问,每组询问给出一个长度为 \(n\) 的 \(0/1\) 串,你可以花 \(h\) 的代价把 \(0\) 修改成 \(1\) 或者把 \(1\) 修改成 \(0\ ...
随机推荐
- BZOJ 3926 诸神眷顾的幻想乡
BZOJ 3926 诸神眷顾的幻想乡 开始看错题看成了每个点度数不超过20 后来翻了翻题解原来看错题的不止我一个 既然叶子数量不超过20,考虑树上的任何一条路径,以任何点为根时,如果它不是一条从上到下 ...
- CF1208H Red Blue Tree
CF1208H Red Blue Tree 原本应该放在这里但是这题过于毒瘤..单独开了篇blog 首先考虑如果 $ k $ 无限小,那么显然整个树都是蓝色的.随着 $ k $ 逐渐增大,每个点都会有 ...
- 【豆科基因组】小豆(红豆)adzuki bean, Vigna angularis基因组2015
目录 一.来源 研究一:Draft genome sequence of adzuki bean, Vigna angularis 研究二:Genome sequencing of adzuki be ...
- R 语言实战-Part 3 笔记
R 语言实战(第二版) part 3 中级方法 -------------第8章 回归------------------ #概念:用一个或多个自变量(预测变量)来预测因变量(响应变量)的方法 #最常 ...
- perl 获取目录信息
1 #!/usr/bin/perl -w 2 use strict; 3 use FindBin qw($Bin $Script); 4 5 my $rp=$Bin; 6 print "th ...
- 网易云信 集成UI库登录dologin没有回调
感谢github上的两位大佬指出问题的解决方法. 解决方法: 在进行ui初始化要在主进程中进行,初始化前进行主进程判断. 若还收不到回调,可尝试将uikit中的base包去掉而在build.gradl ...
- 巩固javaweb的第二十四天
巩固内容: 提示用户信息 在验证失败之后通常需要提示用户错误信息,可以通过下面的代码完成: alert("地址长度大于 50 位!"); 当使用 alert 提示错误信息时,参数是 ...
- 数仓day04----日志预处理2
1.详细描述idmap的整个计算方案 (1)使用SparkSession对象读取用户不同类别的埋点日志,解析并抽取出相应的标识id,使用union进行合并,得到装有汇总标识id的rdd(ids) (2 ...
- 零基础学习java------day1------计算机基础以及java的一些简单了解
一. java的简单了解 Java是一门面向对象编程语言,不仅吸收了C++的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征.Java语言作为静态 ...
- css系列,选择器权重计算方式
CSS选择器分基本选择器(元素选择器,类选择器,通配符选择器,ID选择器,关系选择器), 属性选择器,伪类选择器,伪元素选择器,以及一些特殊选择器,如has,not等. 在CSS中,权重决定了哪些CS ...