CF1095E Almost Regular Bracket Sequence
题目地址:CF1095E Almost Regular Bracket Sequence
真的是尬,Div.3都没AK,难受QWQ
就死在这道水题上(水题都切不了,我太菜了)
看了题解,发现题解有错,不过还是看懂了QAQ
其实是一道好题 (话说CF的题有不好的么(雾
难在预处理
预处理两个数组:
前缀和:若 \(s_i\) 为 \((\) , \(s1_i=s1_{i-1}+1\) ,反之同理;
后缀和:若 \(s_i\) 为 \()\) , \(s2_i=s2_{i+1}+1\) ,反之亦同理。
再预处理两个bool数组:
从头到尾扫,若 \(s1_i>=0\) , \(v1_i=true\) ,否则立刻跳出循环;
从尾到头扫,若 \(s2_i>=0\) , \(v2_i=true\) ,否则亦立刻跳出循环;
!!!注意, \(v1_0=v2_{n+1}=true\) !!!
最后逐个判断每个位置能否被替换即可(如何判断请自行根据代码脑补)
#include <bits/stdc++.h>
using namespace std;
const int N = 1000006;
int n, s1[N], s2[N];
bool v1[N], v2[N];
char s[N];
int main() {
cin >> n;
scanf("%s", s + 1);
for (int i = 1; i <= n; i++)
s1[i] = s1[i-1] + (s[i] == '(' ? 1 : -1);
for (int i = 0; i <= n; i++)
if (s1[i] >= 0) v1[i] = 1;
else break;
for (int i = n; i; i--)
s2[i] = s2[i+1] + (s[i] == ')' ? 1 : -1);
for (int i = n + 1; i; i--)
if (s2[i] >= 0) v2[i] = 1;
else break;
int ans = 0;
for (int i = 1; i <= n; i++)
if (v1[i-1] && v2[i+1]) {
if (s[i] == '(') {
if (s1[i-1] > 0 && s1[i-1] - 1 == s2[i+1]) ans++;
} else {
if (s1[i-1] + 1 == s2[i+1]) ans++;
}
}
cout << ans << endl;
return 0;
}
CF1095E Almost Regular Bracket Sequence的更多相关文章
- E. Almost Regular Bracket Sequence 解析(思維)
Codeforce 1095 E. Almost Regular Bracket Sequence 解析(思維) 今天我們來看看CF1095E 題目連結 題目 給你一個括號序列,求有幾個字元改括號方向 ...
- Educational Codeforces Round 4 C. Replace To Make Regular Bracket Sequence 栈
C. Replace To Make Regular Bracket Sequence 题目连接: http://www.codeforces.com/contest/612/problem/C De ...
- Codeforces Beta Round #5 C. Longest Regular Bracket Sequence 栈/dp
C. Longest Regular Bracket Sequence Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.c ...
- Replace To Make Regular Bracket Sequence
Replace To Make Regular Bracket Sequence You are given string s consists of opening and closing brac ...
- D - Replace To Make Regular Bracket Sequence
You are given string s consists of opening and closing brackets of four kinds <>, {}, [], (). ...
- CodeForces - 612C Replace To Make Regular Bracket Sequence 压栈
C. Replace To Make Regular Bracket Sequence time limit per test 1 second memory limit per test 256 m ...
- (CodeForces - 5C)Longest Regular Bracket Sequence(dp+栈)(最长连续括号模板)
(CodeForces - 5C)Longest Regular Bracket Sequence time limit per test:2 seconds memory limit per tes ...
- 贪心+stack Codeforces Beta Round #5 C. Longest Regular Bracket Sequence
题目传送门 /* 题意:求最长括号匹配的长度和它的个数 贪心+stack:用栈存放最近的左括号的位置,若是有右括号匹配,则记录它们的长度,更新最大值,可以在O (n)解决 详细解释:http://bl ...
- Almost Regular Bracket Sequence CodeForces - 1095E (线段树,单点更新,区间查询维护括号序列)
Almost Regular Bracket Sequence CodeForces - 1095E You are given a bracket sequence ss consisting of ...
随机推荐
- linux ------ 使用 screen 后 SSH 断开后程序依旧能在后台运行
为什么ssh断开后你运行的进程会退出呢? 因为所有进程都得有个父进程.当你ssh到一个服务器上时,打开的shell就是你所有执行命令的父进程. 当你断开ssh连接时,你的命令的父进程就没了.如果处理不 ...
- Pyhton之subprocess模块和configparser模块
一.subprocess模式 # import os # while True: # cmd=input('>>').strip() # if not cmd:continue # if ...
- MapReduce框架原理-MapTask工作机制
MapReduce框架原理-MapTask工作机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. maptask的并行度决定map阶段的任务处理并发度,进而影响到整个job的处理速 ...
- kafka常见异常汇总
1>.java.lang.OutOfMemoryError:Map failed 发生上述问题,原因是发生OOM啦,会导致kafka进程直接崩溃掉!因此我们只能重新启动broker节点了,但 ...
- Python的命名空间及作用域
命名空间的分类 全局命名空间 是在程序从上到下被执行的过程中依次加载进内存的:放置了我们设置的所有变量名和函数名 局部命令空间 就是函数内部定义的名字:当调用函数的时候 才会产生这个名称空间 随着函数 ...
- SQL Server日志过大,清理日志
直接执行下面的代码 USE [master] GO ALTER DATABASE 数据库 SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE 数据库 ...
- Memcached入门学习
Memcached入门学习 学习网址:http://www.runoob.com/Memcached/Memcached-tutorial.html
- Hadoop问题:Input path does not exist: hdfs://Master:9000/user/hadoop/input
问题描述: org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs:/ ...
- 15、JDBC-CallableStatement
一.存储过程 创建 CREATE DEFINER=CURRENT_USER PROCEDURE `adder`(IN a int, IN b int, OUT sum int) BEGIN DECLA ...
- sql 三表左外链接的2种写法【原】
初始化语句 DROP TABLE student; ) )); ','bobo'); ','sisi'); ','gugu'); ','mimi'); DROP TABLE room; ) ),roo ...