题目描述

阿尔比恩王国(the Albion Kingdom)潜伏着一群代号“白鸽队(Team White Pigeon)”的间谍。在没有任务的时候,她们会进行各种各样的训练,比如快速判断一个文档有没有语法错误,这有助于她们鉴别写文档的人受教育程度。
这次用于训练的是一个含有n个括号的文档。括号一共有m种,每种括号都有左括号和右括号两种形式。我们定义用如下的方式定义一个合法的文档:
1.一个空的字符串是一个合法的文档。
2.如果A,B都是合法的文档,那么AB也是合法的文档。
3.如果S是合法的文档,那么aSb也是合法的文档,其中a,b是同一种括号,并且a是左括号,b是右括号。
现在给出q个询问,每次询问只考虑文档第l至r个字符的情况下,文档是不是合法的。

输入描述:

  1. 第一行两个整数n,m,q(1 n,m,q 10

6

  1. )。
    第二行有n个空格隔开的整数x,第i个整数x

i

  1. (0 x

i

  1. < m*2)代表文档中的第i个字符是第

  1. 种括号。另外,如果x

i

  1. 是偶数,它代表一个左括号,否则它代表一个右括号。
    接下来q行,每行两个空格隔开的整数l,r(1 l r n),代表询问第lr个字符构成的字符串是否是一个合法的文档。

输出描述:

  1. 输出共q行,如果询问的字符串是一个合法的文档,输出"Yes",否则输出"No"

输入例子:
  1. 6 4 3
  2. 0 2 3 1 4 7
  3. 1 4
  4. 1 5
  5. 5 6
输出例子:
  1. Yes
  2. No
  3. No

-->

示例1

输入

复制

  1. 6 4 3
  2. 0 2 3 1 4 7
  3. 1 4
  4. 1 5
  5. 5 6

输出

复制

  1. Yes
  2. No
  3. No

题意:就是多次问区间,询问这个区间是否是一个合法的括号序列。

思路:应该做法是蛮多的,我是用栈来模拟的。模拟栈是常规操作,新加入的括号x如果能匹配栈顶y,则弹出栈顶y,是否加入栈x。然后记录每个x加入后的栈顶编号L,那么如果一个区间[l,r]是合法的,当且当L[l-1]==L[r],因为这种情况说明了两点:

1,[l,r]这些括号没有去匹配[1,l-1]的任何括号,即从l开始,模拟栈的过程,没有弹出原来的部分;

2,加入栈的全被弹出了;

这说明[l,r]的括号自己和自己匹配完全了。 所以这个算法是ok的。

  1. #include<bits/stdc++.h>
  2. #define rep(i,a,b) for(int i=a;i<=b;i++)
  3. using namespace std;
  4. const int maxn=;
  5. int a[maxn],q[maxn],L[maxn],top,N,M,Q;
  6. int main(){
  7. scanf("%d%d%d",&N,&M,&Q);
  8. rep(i,,N) scanf("%d",&a[i]);
  9. rep(i,,N) {
  10. if(!top) q[++top]=i;
  11. else {
  12. if(a[i]/==a[q[top]]/&&a[i]==a[q[top]]+) top--;
  13. else q[++top]=i;
  14. }
  15. L[i]=q[top];
  16. }
  17. rep(i,,Q){
  18. int x,y;
  19. scanf("%d%d",&x,&y);
  20. if((y-x)&){
  21. if(L[y]==L[x-]) puts("Yes");
  22. else puts("No");
  23. }
  24. else puts("No");
  25. }
  26. return ;
  27. }

牛客国庆集训派对Day1:J:Princess Principal(栈模拟求括号匹配)的更多相关文章

  1. 牛客国庆集训派对Day1 Solution

    A    Tobaku Mokushiroku Kaiji 水. #include <bits/stdc++.h> using namespace std; ], b[]; void Ru ...

  2. 牛客国庆集训派对Day1 L-New Game!(最短路)

    链接:https://www.nowcoder.com/acm/contest/201/L 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语言20 ...

  3. 牛客国庆集训派对Day1 L New Game!(堆优化dijkstra+建图)

    链接:https://ac.nowcoder.com/acm/contest/201/L来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语言2097 ...

  4. 2019牛客国庆集训派对day1(A, B E F K)

    链接:https://ac.nowcoder.com/acm/contest/1099#question A:可知符合条件的图中间肯定存在一个由1构成的矩形,找到由1构成矩形的边界,判断出现的1的数量 ...

  5. 牛客国庆集训派对Day1.B.Attack on Titan(思路 最短路Dijkstra)

    题目链接 \(Description\) 给定\(n,m,C\)及大小为\((n+1)(m+1)\)的矩阵\(c[i][j]\).平面上有\((n+1)(m+1)\)个点,从\((0,0)\)编号到\ ...

  6. 牛客国庆集训派对Day1 B. Attack on Titan

    B. Attack on Titan 链接 #include<cstdio> #include<algorithm> #include<cstring> #incl ...

  7. 2019牛客国庆集训派对day1

    C 存每个值存在的位置,枚举末尾的值,再枚举前面的值,哈希二分出最长相同的,即剩下的为不同的 D \(f_{i,j,k}\)为前i位,最后一个3因子在j,次因子在k G bitset处理有多少位置符合 ...

  8. 2019牛客国庆集训派对day1 K题 双向链表练习题 splay区间翻转

    题目链接: 解法: 先建n颗平衡树,合并的时候将a中最右的结点翻转到根节点,b中最左的结点翻转到根节点,对合并后的根节点进行标记. #include <bits/stdc++.h> usi ...

  9. 牛客国庆集训派对Day6 A Birthday 费用流

    牛客国庆集训派对Day6 A Birthday:https://www.nowcoder.com/acm/contest/206/A 题意: 恬恬的生日临近了.宇扬给她准备了一个蛋糕. 正如往常一样, ...

随机推荐

  1. 如何使用sql函数平均值、总数、最小值、最大值

    使用sql函数,您可以在一个select语句的查询当中,直接计算数据库资料的平均值.总数.最小值.最大值.总和.标准差.变异数等统计.使用recordset对象时,也可使用这些sql函数. sql函数 ...

  2. C# ---sender

    在某个方法中: 第一种写法: private void btn4_Click_1(object sender, RoutedEventArgs e) { btn1_Click(null, null); ...

  3. HGVS,非HGVS形式的突变描述解释

    NG_012232.1(NM_004006.1):c.93+1G>T: 在该转录本NM_004006.1外显子的第93个碱基的下1个碱基(属于内含子)G变为T. NG_012232.1(NM_0 ...

  4. 史上最详细Windows版本搭建安装React Native环境配置

    说在前面的话: 感谢同事金晓冰倾情奉献本环境搭建教程 之前我们已经讲解了React Native的OS X系统的环境搭建以及配置,鉴于各大群里有很多人反应在Windows环境搭建出现各种问题,今天就特 ...

  5. Java 泛型<T> T 与 T的用法

    T 与 T 比较 T是Type的首字母缩写: T 表示"返回值"是一个泛型,传递什么类型,就返回什么类型:而单独的"T"表示限制传递的参数类型. T的用法 T表 ...

  6. Maven配置与创建

    1.下载Maven工具 从maven官网下载:https://maven.apache.org/download.cgi apache-maven-x.x.x-bin.zip ,解压到指定目录,例如D ...

  7. hibernate的一对多配置

    首先是“一”的 Customer.java package com.xiaostudy.domain; import java.util.HashSet; import java.util.Set; ...

  8. 使用nagios检测windows服务器

    1.安装nagios windows客户端 下载NSClient++的安装包,注意根据实际的32/64CPU来下载 下载地址 http://sourceforge.net/projects/nscpl ...

  9. javascript日期格式处理

    一. 服务端返回的日期和时间之间有T Asp.net MVC中 action返回前台的日期类型数据 是带有 T的,如: 2015-07-07T10:15:01. 这样的数据在Chrome浏览器,会自动 ...

  10. Pandas选项和自定义

    Pandas提供API来自定义其行为的某些方面,大多使用来显示. API由五个相关函数组成.它们分别是 - get_option() set_option() reset_option() descr ...