貪心真的是弱。。。假期還得好好練練qaq
這個主要是在問号的處理,轉念一想,問号如果能取)就盡量取),這樣早點配完就可以把前面那部分給扔掉了。。如果不能取)就要把目前序列中最後一個?取(來和這個?或)比對。。
當然還假設了?取(的配對情況,為了避免右括号過多無法比對到左括号的情況。。
然後簡介地說就是在枚舉過程中令( + ?>=) 且 ) + ?>=(
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<queue>
#include<cmath>
#define inc(i,l,r) for(int i=l;i<=r;i++)
#define dec(i,l,r) for(int i=l;i>=r;i--)
#define link(x) for(edge *j=h[x];j;j=j->next)
#define eps 1e-8
#define inf 1000000007
#define mem(a) memset(a,0,sizeof(a))
#define ll long long
#define succ(x) (1<<x)
#define lowbit(x) (x&(-x))
#define sqr(x) ((x)*(x))
#define ls T[i<<1]
#define rs T[i<<1|1]
#define op T[i]
#define mid (x+y>>1)
#define NM 10005
#define nm 10005
#define pi 3.141592653
using namespace std;
int read(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
return f*x;
}
int n,x,y,ans;
char s[NM];
int main(){
scanf("%s",s);
n=strlen(s)-1;
inc(i,0,n){
x=y=0;
inc(j,i,n){
if(s[j]=='(')x++,y++;
else if(s[j]==')')x--,y--;
else x--,y++;
if(x<0)x=1;
if(y<0)break;
if(!x)ans++;
}
}
return 0*printf("%d\n",ans);
}
C. The Monster
time limit per test
memory limit per test
input
output
As Will is stuck in the Upside Down, he can still communicate with his mom, Joyce, through the Christmas lights (he can turn them on and off with his mind). He can't directly tell his mom where he is, because the monster that took him to the Upside Down will know and relocate him.

Thus, he came up with a puzzle to tell his mom his coordinates. His coordinates are the answer to the following problem.
A string consisting only of parentheses ('(' and ')') is called a bracket sequence. Some bracket sequence are called correct bracket sequences. More formally:
- Empty string is a correct bracket sequence.
- ifsis a correct bracket sequence, then(s)
- ifsandtare correct bracket sequences, thenst(concatenation ofsandt) is also a correct bracket sequence.
A string consisting of parentheses and question marks ('?') is called pretty if and only if there's a way to replace each question mark with either '(' or ')' such that the resulting string is a non-empty
Will gave his mom a string s consisting of parentheses and question marks (using Morse code through the lights) and his coordinates are the number of pairs of integers(l, r) such that 1 ≤ l ≤ r ≤ |s| and the string slsl + 1...sr is pretty, where si is i-th character of s.
Joyce doesn't know anything about bracket sequences, so she asked for your help.
Input
The first and only line of input contains string s, consisting only of characters '(', ')' and '?' (2 ≤ |s| ≤ 5000).
Output
Print the answer to Will's puzzle in the first and only line of output.
Examples
Input
((?))
Output
4
Input
??()??
Output
7
Note
For the first sample testcase, the pretty substrings of s
- "(?" which can be transformed to "()".
- "?)" which can be transformed to "()".
- "((?)" which can be transformed to "(())".
- "(?))" which can be transformed to "(())".
- "??" which can be transformed to "()".
- "()".
- "??()" which can be transformed to "()()".
- "?()?" which can be transformed to "(())".
- "??" which can be transformed to "()".
- "()??" which can be transformed to "()()".
- "??()??" which can be transformed to "()()()".