HDU - 5479 Scaena Felix (栈模拟)水

来源:互联网 发布:淘宝买刺刀 编辑:程序博客网 时间:2024/05/21 04:25
HDU - 5479
Scaena Felix
Time Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64u

Submit Status

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.
 

Input

The first line of the input is a integer , meaning that there are  test cases. 

Every test cases contains a parentheses sequence  only consists of '(' and ')'. 

.
 

Output

For every test case output the least number of modification.
 

Sample Input

3()(((((())
 

Sample Output

102
 

Source

BestCoder Round #57 (div.2)
//题意:
给你一串字符串,问有几对括号
直接栈模拟就行了
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<cmath>#include<map>#include<queue>#include<stack>#define INF 0x3f3f3f3f#define ull unsigned lonb long#define ll long long#define IN __int64#define N 1010#define M 1000000007using namespace std;stack<char>ss;char s[N];int main(){int t,i,j;scanf("%d",&t);while(t--){scanf("%s",s);int len=strlen(s);int l=0,r=0;for(i=0;i<len;i++){if(s[i]=='('){l++;ss.push(s[i]);}else{if(l){r++;l--;ss.pop();}}}printf("%d\n",r);}return 0;}

0 0
原创粉丝点击