principal

已经提交 已经通过

23.66%

Total Submission:131

Total Accepted:31

题目描述

阿尔比恩王国潜伏着代号白鸽队''的一群间谍。在没有任务的时候,她们会进行各种各样的训练,比如快速判断一个文档有没有语法错误,这有助于她们鉴别写文档的人受教育程度。

这次用于训练的是一个含有nn个括号的文档。括号一共有mm种,每种括号都有左括号和右括号两种形式。我们定义用如下的方式定义一个合法的文档:

1.一个空的字符串是一个合法的文档。

2.如果A,B都是合法的文档,那么AB也是合法的文档。

3.如果S是合法的文档,那么aSb也是合法的文档,其中a,b是同一种括号,并且a是左括号,b是右括号。

现在给出qq个询问,每次询问只考虑文档第ll至rr个字符的情况下,文档是不是合法的。

 
 

输入描述

第一行两个整数n,m,q(1 \le n,m,q \le 10^6)n,m,q(1≤n,m,q≤106)。

第二行有nn个空格隔开的整数xx,第i个整数x_i(0 \le x_i &lt; m*2)xi​(0≤xi​<m∗2)代表文档中的第ii个字符是第\lfloor \frac{x}{2} \rfloor⌊2x​⌋种括号。另外,如果x_ixi​是偶数,它代表一个左括号,否则它代表一个右括号。

接下来qq行,每行两个空格隔开的整数l,r(1 \le l \le r \le n)l,r(1≤l≤r≤n),代表询问第ll至rr个字符构成的字符串是否是一个合法的文档。

输出描述

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

样例输入 1

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

样例输出

Ye

No

No

题意:
思路:既然L-R是一个合法的文档,那么即L~R这个子文档的括号都是合法匹配的,那么我们可以对整个文档进行预处理,
处理出到第i个位置有多少个括号没匹配成功。记array: L 那么如果第L[l-1]的值等于L[r]即可以说明l~r是一个合法文档
因为L[l-1]==L[r] ,那么即代表l~r这段中都自我抵消掉了(即匹配完成了)。
细节见代码:
#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 ;
}

 

Comet OJ 热身赛(K题)principal(括号匹配问题+stack模拟)的更多相关文章

  1. 【九度OJ】题目1153:括号匹配问题 解题报告

    [九度OJ]题目1153:括号匹配问题 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1153 题目描述: 在某个字符串(长度不超过1 ...

  2. Comet OJ 热身赛-principal

    这题的话,我们分析一下,入栈的操作是: 栈空 栈顶元素和当前操作元素不属于同一类括号 栈顶元素和当前操作元素属于同一类括号,但是并不是左括号在前,右括号在后 上面三个条件有任意一个满足都应该入栈,如果 ...

  3. Comet OJ 热身赛(E题)(处理+最短路算法)

    dijkstra 已经提交 已经通过 42.86% Total Submission:189 Total Accepted:81 题目描述 Eagle Jump公司正在开发一款新的游戏.泷本一二三作为 ...

  4. 区间dp好题cf149d 括号匹配

    见题解链接https://blog.csdn.net/sdjzping/article/details/19160013 #include<bits/stdc++.h> using nam ...

  5. isaster(Comet OJ - Contest #11D题+kruskal重构树+线段树+倍增)

    目录 题目链接 思路 代码 题目链接 传送门 思路 \(kruskal\)重构树\(+\)线段树\(+\)倍增 代码 #include <set> #include <map> ...

  6. 表达式括号匹配(stack)

    题目描述 假设一个表达式由英文字母(小写).运算符(+.-.*./)和左右小(圆)括号构成,以“@”作为表达式的结束符.请编写一个程序检查表达式中的左右括号是否匹配,若匹配,则返回“YES”:否则返回 ...

  7. POJ-2955 Brackets(括号匹配问题)

    题目链接:http://poj.org/problem?id=2955 这题要求求出一段括号序列的最大括号匹配数量 规则如下: the empty sequence is a regular brac ...

  8. 南阳理工大学oj 题目15 括号匹配(二)

    括号匹配(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:6   描述 给你一个字符串,里面只包含"(",")","[&qu ...

  9. POJ C程序设计进阶 编程题#4:括号匹配问题

    编程题#4:扩号匹配问题 来源: POJ(Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 在某 ...

随机推荐

  1. Django之--通过MVC架构的html模板展示Hello World!

    上一篇:Django之--网页展示Hello World! 初步说明了如何使用Django来显示hello world,本文略微进阶下使用html模板来展示hello world~ 首先在mysite ...

  2. sqlserver 删除表中 指定字符串

    源表T "单据编号"               "航班计划日期"        "航班号"          "起飞航站代码&q ...

  3. Python 面向对象的特性2-----继承

    面向对象的三大特性 1.封装 根据职责将属性和方法封装到一个抽象的类中,然后类创建一个实实在在的对象,有了对象以后,就可以访问到对象内部的属性,或者让对象来调用一个已经封装好的方法. 2.继承 实现代 ...

  4. 【PAT】B1004 成绩排名

    简单题 循环输入放入结构体数组,一个sort搞定 #include <stdio.h> #include<algorithm> using namespace std; str ...

  5. JavaScript -- 时光流逝(七):js中的全局函数

    JavaScript -- 知识点回顾篇(七):js中的全局函数 全局函数可用于所有内建的 JavaScript 对象. (1) encodeURI():把字符串编码为 URI. <script ...

  6. java爬知乎问题的所有回答

    突然想爬知乎问题的答案, 然后就开始研究知乎页面,刚开始是爬浏览器渲染好的页面, 解析DOM,找到特定的标签, 后来发现,每次只能得到页面加载出来的几条数据,想要更多就要下拉页面,然后浏览器自动加载几 ...

  7. Java strictfp

    strictfp关键字 用于强制Java中的浮点计算(float或double)的精度符合IEEE 754标准. 不使用strictfp:浮点精度取决于目标平台的硬件,即CPU的浮点处理能力. 使用s ...

  8. router-link 自定义点击事件

    <li v-for="(item, index) in menuList"> <router-link class="classify" ta ...

  9. PostGIS中dbf file (.dbf) can not be opened.shapefile import failed

    postgis数据库文件shapefile导入 dbf file (.dbf) can not be opened.shapefile import failed. Destination: publ ...

  10. C# 生成和解析二维码

    下面是C#和JAVA两个版本的开放源码下载: C#:http://www.codeproject.com/Articles/20574/Open-Source-QRCode-Library JAVA: ...