2016湖南省省賽G題
阿新 • • 發佈:2019-01-07
G - Parenthesis
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
4 2 (()) 1 3 2 3 2 1 () 1 2Sample Output
No Yes No
題解:就是一個括號配對問題。
下面附上程式碼:
#include<stdio.h> #include<algorithm> #include<stack> using namespace std; char str[100005]; int main() { int n, m; while(~scanf("%d%d", &n, &m)) { scanf("%s", str+1); int a, b; for(int i = 1; i <= m; i++) { scanf("%d%d", &a, &b); if(a>b) swap(a,b); if(str[b]=='(' || str[a] == str[b])//這個地方不加前面的str[b]=='(',就會超時。 { printf("Yes\n"); continue; } swap(str[a], str[b]); int ans = 0; for(int i = 1; i <= n; i++) { if(str[i] == '(') ans++; else ans--; if(ans < 0) { printf("No\n"); break;} } if(ans == 0) printf("Yes\n"); swap(str[a], str[b]); } } return 0; }