Codeforce 1095 E. Almost Regular Bracket Sequence 解析(思維)

今天我們來看看CF1095E

題目連結

題目

給你一個括號序列,求有幾個字元改括號方向能夠讓整串變成合法。

前言

這題能幫助熟悉有關Regular Bracket Sequence的能夠維護的狀態。

想法

只要維護左括號為\(1\),右括號為\(-1\)的前(後)綴和,並維護一個前(後)綴有沒有可能是某個Regular Bracket Sequence的前(後)綴(如果想要前綴\([0,i]\)可以是某個Regular Bracket Sequence的前綴,只需要\([0,i-1]\)可以\([0,i]\)的前綴和大於等於零),那麼對於每個字元\(s_i\),我們只需要\([0,i-1]\)可能是前綴且\([i+1,n]\)可能是前綴且整串的左右括號數量一樣多,即可。

程式碼:

const int _n=1e6+10;
int t,n,preB[_n],sufB[_n];
bool preC[_n],sufC[_n];
char s[_n];
main(void) {cin.tie(0);ios_base::sync_with_stdio(0);
cin>>n>>(s+1);
rep(i,1,n+1){
if(s[i]=='(')preB[i]=preB[i-1]+1;
else preB[i]=preB[i-1]-1;
}
per(i,1,n+1){
if(s[i]=='(')sufB[i]=sufB[i+1]+1;
else sufB[i]=sufB[i+1]-1;
}preC[0]=sufC[n+1]=1;
rep(i,1,n+1){
if(preC[i-1] and preB[i]>=0)preC[i]=1;
else break;
}
per(i,1,n+1){
if(sufC[i+1] and sufB[i]<=0)sufC[i]=1;
else break;
}ll ans=0;
rep(i,1,n+1){
int tmp=(s[i]=='('?-1:1);
if(preC[i-1] and sufC[i+1] and preB[i-1]+tmp+sufB[i+1]==0)ans++;
}cout<<ans<<'\n';
return 0;
}

標頭、模板請點Submission看

Submission

E. Almost Regular Bracket Sequence 解析(思維)的更多相关文章

  1. D. Regular Bridge 解析(思維、圖論)

    Codeforce 550 D. Regular Bridge 解析(思維.圖論) 今天我們來看看CF550D 題目連結 題目 給你一個\(k\le100\),請構造出一個至少有一個Bridge的,每 ...

  2. 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 ...

  3. 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 ...

  4. Replace To Make Regular Bracket Sequence

    Replace To Make Regular Bracket Sequence You are given string s consists of opening and closing brac ...

  5. CF1095E Almost Regular Bracket Sequence

    题目地址:CF1095E Almost Regular Bracket Sequence 真的是尬,Div.3都没AK,难受QWQ 就死在这道水题上(水题都切不了,我太菜了) 看了题解,发现题解有错, ...

  6. D - Replace To Make Regular Bracket Sequence

    You are given string s consists of opening and closing brackets of four kinds <>, {}, [], (). ...

  7. 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 ...

  8. (CodeForces - 5C)Longest Regular Bracket Sequence(dp+栈)(最长连续括号模板)

    (CodeForces - 5C)Longest Regular Bracket Sequence time limit per test:2 seconds memory limit per tes ...

  9. 贪心+stack Codeforces Beta Round #5 C. Longest Regular Bracket Sequence

    题目传送门 /* 题意:求最长括号匹配的长度和它的个数 贪心+stack:用栈存放最近的左括号的位置,若是有右括号匹配,则记录它们的长度,更新最大值,可以在O (n)解决 详细解释:http://bl ...

随机推荐

  1. Java多线程--CAS

    在Java多线程并发的情况下同时对一个变量进行操作会出现线程安全的问题,假如我们现在使用20个线程对一个变量不停累加1,代码如下: 1 public class ThreadDemo implemen ...

  2. zabbix_server.conf配置文件参数

    NodeID: 在amster-child 的分布式架构中,这个ID是唯一标识zabbix node的号码 ListenPort:Trapper 类型Item监听的端口, SourceIP: 在连接其 ...

  3. java实现点击查询数据生成excel文件并下载

    须先导入关键maven包 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi& ...

  4. 深入总结Javascript原型及原型链

    本篇文章给大家详细分析了javascript原型及原型链的相关知识点以及用法分享,具有一定的参考价值,对此有需要的朋友可以参考学习下.如有不足之处,欢迎批评指正. 我们创建的每个函数都有一个 prot ...

  5. Python-输入输出-input ouput

    输入.输出? 这种统称为IO流,也就是数据流向,在标准中,从终端输入称为标准输入 sidin,从终端输出为标准输出 stdout,从终端错误输出则为标准错误输出 stderr.这些只是IO流中终端方面 ...

  6. Nginx+Gunicorn+Supervisor部署Flask应用

    Flask 内置了简单的 Web 环境,让我们在开发的时候只需要专注于应用实现,而真正要在生产环境运行时这个简单的 Web 环境就不够用了,还需要一系列操作才能让 Web 应用高效的运行起来.现在记录 ...

  7. IDEA2020版最佳优化思路(中文界面)

    IDEA优化 基于当前最新版idea 2020.1版本进行设置 设置中文 在idea 2020.1版本后官方是支持中文啦 先上效果图 设置方法 这里需要下载官方的中文包 鼠标悬停提示 效果图 设置方法 ...

  8. HTML中css水平居中的几种方式

    1. 子元素为行内元素时,父元素使用 text-align: center; 实现子元素的水平居中: 2. 子元素为块级元素时, 2.1. 将子元素设置 margin: 0 auto; 实现居中: 2 ...

  9. C++中union的使用方法

    转载:https://blog.csdn.net/hou09tian/article/details/80816445 1 概述 1.1 定义 union即为联合,它是一种特殊的类.通过关键字unio ...

  10. P2652 同花顺

    P2652 同花顺 Link 题目背景 所谓同花顺,就是指一些扑克牌,它们花色相同,并且数字连续. 题目描述 现在我手里有 \(n\) 张扑克牌,但它们可能并不能凑成同花顺.我现在想知道,最少更换其中 ...