Scaena Felix
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 258 Accepted Submission(s): 112
Problem Description
Given a parentheses sequence consist of '(' and ')', a modify can filp a parentheses, changing '(' to ')' or ')' to '('.
If we want every not empty <b>substring</b> of this parentheses sequence not to be "paren-matching", how many times at least to modify this parentheses sequence?
For example, "()","(())","()()" are "paren-matching" strings, but "((", ")(", "((()" are not.
If we want every not empty <b>substring</b> of this parentheses sequence not to be "paren-matching", how many times at least to modify this parentheses sequence?
For example, "()","(())","()()" are "paren-matching" strings, but "((", ")(", "((()" are not.
Input
The first line of the input is a integer
T
, meaning that there are
T
test cases.
Every test cases contains a parentheses sequence S only consists of '(' and ')'.
1≤|S|≤1,000 .
Every test cases contains a parentheses sequence S only consists of '(' and ')'.
1≤|S|≤1,000 .
Output
For every test case output the least number of modification.
Sample Input
3 () (((( (())
Sample Output
1 0 2
BC,今天直接哭了,本来A了3道,坐等涨分,结果醒来一看,全卡掉了。。。。
不过,今天搞到女神的照片了,哈哈哈
#include <iostream>
#include <string>
#include <stdlib.h>
#include <ctype.h>
#include <cstdio>
#include <cstdlib>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <cstring>
#include <math.h>
#include <algorithm>
#define LL long long
#define INF 0x3f3f3f3f
#define RR freopen("in.txt","r",stdin)
#define WW freopen("out.txt","w",stdout)
#define PI acos(-1.0)
using namespace std;
int L[1010],R[1010];
char s[1010];
int main()
{
int T;
cin>>T;
while(T--)
{
cin>>s+1;
int len = strlen(s+1);
for(int i=1;i<=len;i++)
{
L[i] = L[i-1] + (s[i] == '(');
}
for(int i=len;i>=1;i--)
{
R[i] = R[i+1] + (s[i] == ')');
}
int ans = INF;
for(int i=0;i<=len;i++)
{
ans = min(ans,L[i]+R[i+1]);
}
cout<<ans<<endl;
}
return 0;
}