题目描述

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

输入描述:

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

6

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

i

(0 ≤ x

i

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

种括号。另外,如果x

i

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

输出描述:

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

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

-->

示例1

输入

复制

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

输出

复制

Yes
No
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的。

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
int a[maxn],q[maxn],L[maxn],top,N,M,Q;
int main(){
scanf("%d%d%d",&N,&M,&Q);
rep(i,,N) scanf("%d",&a[i]);
rep(i,,N) {
if(!top) q[++top]=i;
else {
if(a[i]/==a[q[top]]/&&a[i]==a[q[top]]+) top--;
else q[++top]=i;
}
L[i]=q[top];
}
rep(i,,Q){
int x,y;
scanf("%d%d",&x,&y);
if((y-x)&){
if(L[y]==L[x-]) puts("Yes");
else puts("No");
}
else puts("No");
}
return ;
}

最新文章

  1. MyBatis获取插入记录的自增长字段值
  2. SharePoint 2010 站点附加数据升级到SP2013
  3. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q81-Q83)
  4. MCS-51系列特殊功能寄存器(摘录)
  5. 你是码农还是Geek?
  6. 【shell】变量的配置文件
  7. LeetCode:237
  8. Spring实战——无需一行xml配置实现自动化注入
  9. Mysql INNER,LEFT ,RIGHT join的使用
  10. servlet跳转jsp
  11. Linux常用命令及使用技巧
  12. TCP头部分析与确认号的理解
  13. 【重要】使用Git命令行上传到GitHub上
  14. vue项目接口域名动态获取
  15. vChart
  16. 工作队列.py
  17. Vue开发中遇到的问题及解决方案
  18. mysql查询当前时间,一天内,一周,一个月内的sql语句
  19. tensorflow训练打游戏ai
  20. AC自动机【萌新文章】

热门文章

  1. linux例行性工作调度学习(一)
  2. 防火墙之地址转换SNAT DNAT
  3. shiro的过滤器
  4. What is CRC and how does it works?
  5. Centos 7 Sublime 安装 package control
  6. Saltstack 命令行:批量发送命令,返回执行结果
  7. 20162305李昱兴 2016-2017-2 《Java程序设计》第2周学习总结
  8. PHP练习题一
  9. centos 安装 谷歌BBR
  10. easyui扩展数据表格点击加号拓展