题目地址: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\) !!!

最后逐个判断每个位置能否被替换即可(如何判断请自行根据代码脑补)

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N = 1000006;
  4. int n, s1[N], s2[N];
  5. bool v1[N], v2[N];
  6. char s[N];
  7. int main() {
  8. cin >> n;
  9. scanf("%s", s + 1);
  10. for (int i = 1; i <= n; i++)
  11. s1[i] = s1[i-1] + (s[i] == '(' ? 1 : -1);
  12. for (int i = 0; i <= n; i++)
  13. if (s1[i] >= 0) v1[i] = 1;
  14. else break;
  15. for (int i = n; i; i--)
  16. s2[i] = s2[i+1] + (s[i] == ')' ? 1 : -1);
  17. for (int i = n + 1; i; i--)
  18. if (s2[i] >= 0) v2[i] = 1;
  19. else break;
  20. int ans = 0;
  21. for (int i = 1; i <= n; i++)
  22. if (v1[i-1] && v2[i+1]) {
  23. if (s[i] == '(') {
  24. if (s1[i-1] > 0 && s1[i-1] - 1 == s2[i+1]) ans++;
  25. } else {
  26. if (s1[i-1] + 1 == s2[i+1]) ans++;
  27. }
  28. }
  29. cout << ans << endl;
  30. return 0;
  31. }

CF1095E Almost Regular Bracket Sequence的更多相关文章

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

    Codeforce 1095 E. Almost Regular Bracket Sequence 解析(思維) 今天我們來看看CF1095E 題目連結 題目 給你一個括號序列,求有幾個字元改括號方向 ...

  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. D - Replace To Make Regular Bracket Sequence

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

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

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

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

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

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

  9. Almost Regular Bracket Sequence CodeForces - 1095E (线段树,单点更新,区间查询维护括号序列)

    Almost Regular Bracket Sequence CodeForces - 1095E You are given a bracket sequence ss consisting of ...

随机推荐

  1. 关于MyBase 7.0 破解的方法

    Mybase 是一个功能强劲且可随心所欲自定义格式及层次关系的通用资料管理软件, 可用于管理各种各样的信息,如一:各类文档.文件.资料.名片.事件.日记.项目.笔记.下载的精华.收集的各种资料等等,即 ...

  2. ssm框架中从controller传值给jsp的方式

    第一种方式是 通过session 第二种如下: 如何将controller层值传递到JSP页面 @RequestMapping(value="/result",method=Req ...

  3. Centos7安装Openldap初级篇

    openldap 单节点编译安装 1.获取源码包 #下载Berkeley DB www.oracle.com/technetwork/database/database-technologies/be ...

  4. Spring Boot笔记五: Web开发之Webjar和静态资源映射规则

    目录 Webjar /** 访问当前项目的任何资源 欢迎页 标签页图标 Webjar 开始讲到Spring Boot的Web开发了,先介绍Webjar,这个其实就是把一些前端资源以jar包的形式导入到 ...

  5. python 字符串 切片

    ####################概念######################''' int 整数 str 字符串 一般不存放大量的数据 bool 布尔值,用来判断. True,False ...

  6. 3.Zuul-过滤器

    1.什么是Zuul? 路由+过滤器=Zuul,核心是一系列的过滤器 2.Zuul的过滤器: pre:可以在请求被路由之前调用 route:在路由请求时候被调用 post:在route和error过滤器 ...

  7. ARM寄存器介绍

    ARM处理器共有37个寄存器.其中包括:31个通用寄存器,包括程序计数器(PC)在内.这些寄存器都是32位寄存器.以及6个32位状态寄存器.但目前只使用了其中12位.ARM处理器共有7种不同的处理器模 ...

  8. Structured Streaming Programming Guide结构化流编程指南

    目录 Overview Quick Example Programming Model Basic Concepts Handling Event-time and Late Data Fault T ...

  9. pytorch 学习--60分钟入个门

    pytorch视频教程 标量(Scalar)是只有大小,没有方向的量,如1,2,3等 向量(Vector)是有大小和方向的量,其实就是一串数字,如(1,2) 矩阵(Matrix)是好几个向量拍成一排合 ...

  10. JAVA 线程池之Callable返回结果

    本文介绍如何向线程池提交任务,并获得任务的执行结果.然后模拟 线程池中的线程在执行任务的过程中抛出异常时,该如何处理. 一,执行具体任务的线程类 要想 获得 线程的执行结果,需实现Callable接口 ...