Parenthesis(括号平衡串,匹配问题)
来源:互联网 发布:mysql 5.7.20安装教程 编辑:程序博客网 时间:2024/06/05 07:19
Bobo has a balanced parenthesis sequence P=p 1 p 2…p n of length n and q questions.
The i-th question is whether P remains balanced after p ai and p bi swapped. Note that questions are individual so that they have no affect on others.
Parenthesis sequence S is balanced if and only if:
1. S is empty;
2. or there exists balanced parenthesis sequence A,B such that S=AB;
3. or there exists balanced parenthesis sequence S’ such that S=(S’).
Input
The input contains at most 30 sets. For each set:
The first line contains two integers n,q (2≤n≤10 5,1≤q≤10 5).
The second line contains n characters p 1 p 2…p n.
The i-th of the last q lines contains 2 integers a i,b i (1≤a i,b i≤n,a i≠b i).
Output
For each question, output ” Yes” if P remains balanced, or ” No” otherwise.
Sample Input
4 2
(())
1 3
2 3
2 1
()
1 2
Sample Output
No
Yes
No
题意:给定一个长度为n的括号平衡串,q次交换,问交换后是不还是平衡串? 是输出Yes,不是输出No。
分析: 未交换时,就是一个平衡串,即括号都能够匹配
那么 交换的位置 可能有以下几种情况:
1.原来就是一样的 或者 左边的是’)’,右边的是’(’ 直接特判 (少一种判断会TLE)
2.左边的是’(’ ,右边的是’)’ 计数判断
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int mod=10056;const int N=1e5+5;typedef long long LL;#define mem(a,n) memset(a,n,sizeof(a))char str[N];int main(){ int n,q; while(~scanf("%d%d",&n,&q)) { scanf("%s",str); for(int i=0; i<q; i++) { int a,b; scanf("%d%d",&a,&b); if(str[a-1]==str[b-1]) { puts("Yes"); continue; } if(a>b) swap(a,b); if(str[a-1]==')'&&str[b-1]=='(') { puts("Yes"); continue; } swap(str[a-1],str[b-1]); int ans=0; for(int i=0; i<n; i++) { if(str[i]=='(') ans++; else ans--; if(ans<0) break; } printf("%s\n",ans?"No":"Yes"); swap(str[a-1],str[b-1]);/// 还要换回去! } } return 0;}
- Parenthesis(括号平衡串,匹配问题)
- CSU1809 Parenthesis(前缀和+括号匹配)
- parenthesis 括号匹配 (区间dp)
- CSU-1809:Parenthesis 括号匹配问题(线段树维护最小值)
- hdu 5831 Rikka with Parenthesis II (可交换位置括号匹配)
- Contest1002 - HHU ACM 综合训练1 E题 Mouse and Parenthesis(线段树+括号匹配)
- FZU 2030 括号问题 (括号匹配)
- C++ Stack Application - (Parenthesis Matching) 堆栈应用之"括号匹配"
- HDU-5831-Rikka with Parenthesis II-括号匹配
- HHU Mouse and Parenthesis (线段树+括号匹配)
- HDU 5831 Rikka with Parenthesis II (括号匹配)
- 平衡括号问题
- 平衡括号问题
- 括号匹配问题(nyoj2)
- 括号匹配问题(一)
- poj2955(括号匹配问题)
- 括号匹配问题(1)
- 匹配平衡组 , 匹配括号组
- Python安装超时
- ESP8266 SDK开发篇(三)——定时器
- 在线笔试的诀窍
- 日夜间模式
- Python环境安装(3.5.4)
- Parenthesis(括号平衡串,匹配问题)
- LeetCode 78. Subsets (Python)
- Aizu 2784 Similarity of Subtrees
- oi中犯过的2b错误
- 实现日夜间转换获取数据上下刷新(main)
- MAC版Eclipse的常用快捷键
- 使用Excel2013制作甘特图
- 8.13
- [BZOJ3389]信号连接