ABC350 FG 题解
本人 Unrated 在开始后 1h 参加,20 分钟过 F,1h 过 G。
F
Overview
唐,史上最水 F。
Description
有一个串 SSS,包含大小写字母,( 和 ),保证括号匹配。
对于每组匹配括号,从里往外翻转、改变大小写。
比如 ((A)y)x,可以先变成 (ay)x,再变成 YAx。
求最终的 SSS。
Solution
首先确定每个字母的大小写再分治翻转就行了。
类似中缀表达式的求解过程。
O(nlogn)O(n\log n)O(nlogn)。
Code
void solve(int ll, int r){
if(layer[r] & 1){
int i = r;
while(i >= ll){
if(s[i] == ')'){
solve(lst[i] + 1, i - 1), i = lst[i] - 1;
}
else cout << s[i], i--;
}
}
else{
int i = ll;
while(i <= r){
if(s[i] == '('){
solve(i + 1, nxt[i] - 1), i = nxt[i] + 1;
}
else cout << s[i], i++;
}
}
}
void solve(int testcase, ...){
init_vars();
cin >> s;
stack<int> st;
for(int i = 0; i < s.length(); i++){

最低0.47元/天 解锁文章
1124

被折叠的 条评论
为什么被折叠?



