为啥全部WA
查看原帖
为啥全部WA
329857
zifanwang楼主2020/11/19 21:30

代码:

#include<bits/stdc++.h>
using namespace std;
struct dp{int zero,one;}ans[150001];
int len,t=1;
string str;
stack<char>s;
inline void run(char ch,dp &a,dp &b){
	if(ch=='+'){
		a.one=(a.one*(b.zero+b.one)+a.zero*b.one)%10007;
    	a.zero=a.zero*b.zero%10007;
	}else{
    	a.zero=(a.zero*(b.zero+b.one)+a.one*b.zero)%10007;
    	a.one=a.one*b.one%10007;
	}
}
int main(){
	cin>>len>>str;
	str+=')';ans[1].zero=ans[1].one=1;s.push('(');
	for(int i=0;i<=len;++i){
    	if(str[i]=='(')s.push('(');
    	else if(str[i]==')'){
    		for(;s.top()!='(';s.pop(),--t)run(s.top(),ans[t-1],ans[t]);
    		s.pop();
    	}else{
    		for(;s.top()<=str[i]&&s.top()!='(';s.pop(),t--)run(s.top(),ans[t-1],ans[t]);
    		s.push(str[i]);ans[++t].zero=ans[t].one=1;
		}
	}
	cout<<ans[1].zero;
	return 0;
}
2020/11/19 21:30
加载中...