UER #2 手机的生产

来源:互联网 发布:java用户管理系统建表 编辑:程序博客网 时间:2024/05/02 22:51

挣扎了好久终于A了
大佬说这是一个模拟题,然后果断发现看不懂。。。
大佬给我们讲(fa)了(le)一(ti)下(jie),大概就是把这个表达式用 | 分开,分成每份只有 & ,然后对于只有”&&”的情况,k个fork()的表达式会有k种方案返回0,1种方案返回1(找规律)。最后从左到右计算i到tot的方案数(这应该是dp啊)

#include <bits/stdc++.h>#define MOD 998244353 using namespace std;int n,tot=1,k,ans;char a[100005];int ans0[100005],ans1[100005];int main(){    scanf ("%d",&n);    ans0[0]=1;ans1[0]=1;    for(int i=1;i<=n-1;i++)    {        char c;        scanf("%c%c%c",&c,&c,&c);        if(c=='&')            tot++;        else         {            ans0[++k]=tot;            ans1[k]=1;            tot=1;        }    }    ans0[++k]=tot;    ans1[k]=1;    for (int i=1;i<=k;i++)    {        ans=(ans+(long long)ans1[i]*ans0[i-1]%MOD)%MOD;        ans0[i]=(long long)ans0[i]*ans0[i-1]%MOD;    }    ans=(ans+ans0[k])%MOD;    printf("%lld",ans);    return 0;}
原创粉丝点击