五错缤纷,为啥,一分没有
查看原帖
五错缤纷,为啥,一分没有
602932
NumberTrart楼主2023/1/4 20:28
#include<iostream>
using namespace std;
typedef long long ll;
ll n;
string s;
struct node
{
    char c='#';
    ll dp0=1,dp1=1;
    void set(char c,ll dp0,ll dp1)
    {
        this->c=c;
        this->dp0=dp0;
        this->dp1=dp1;
    }
} a[100005];
ll top,dp0,dp1,tmp0,tmp1;
int main()
{
    cin>>n>>s;
    dp0=dp1=1;
    for(int i=0;i<n;i++)
        if(s[i]=='(')
            a[++top].set('(',0,0);
        else if(s[i]==')')
        {
            while(a[top].c!='('&&top>=1)
            {
                if(a[top].c=='+')
                {
                    tmp0=dp0*a[top].dp0;
                    tmp1=dp0*a[top].dp1+dp1*a[top].dp0+dp1*a[top].dp1;
                }
                else if(a[top].c=='*')
                {
                    tmp0=dp0*a[top].dp0+dp0*a[top].dp1+dp1*a[top].dp0;
                    tmp1=dp1*a[top].dp1;
                }
                else
                    break;
                dp0=tmp0%10007;
                dp1=tmp1%10007;
                top--;
            }
            top--;//弹掉左括号
        }
        else if(s[i]=='+')
        {
            while(a[top].c!='('&&a[top].c!='+'&&top>=1)
            {
                if(a[top].c=='*')
                {
                    tmp0=dp0*a[top].dp0+dp0*a[top].dp1+dp1*a[top].dp0;
                    tmp1=dp1*a[top].dp1;
                }
                else
                    break;
                dp0=tmp0%10007;
                dp1=tmp1%10007;
                top--;
            }
            if(a[top].c=='(') top--;
            a[++top].set('+',dp0,dp1);
            dp0=1;
            dp1=1;
        }
        else if(s[i]=='*')
        {
            a[++top].set('*',dp0,dp1);
            dp0=1;
            dp1=1;
        }
    while(top>=0)
    {
        if(a[top].c=='+')
        {
            tmp0=dp0*a[top].dp0;
            tmp1=dp0*a[top].dp1+dp1*a[top].dp0+dp1*a[top].dp1;
        }
        else if(a[top].c=='*')
        {
            tmp0=dp0*a[top].dp0+dp0*a[top].dp1+dp1*a[top].dp0;
            tmp1=dp1*a[top].dp1;
        }
        else
            break;
        dp0=tmp0%10007;
        dp1=tmp1%10007;
        top--;
    }
    cout<<dp1;
    return 0;
}

2个RE,8个WA

不能说五错缤纷,因为五错是WA,TLE,MLE,R(T)E,C(P)E

2023/1/4 20:28
加载中...