zoukankan      html  css  js  c++  java
  • PAT (Advanced Level) 1093. Count PAT's (25)

    预处理每个位置之前有多少个P,每个位置之后有多少个T。

    对于每个A,贡献的答案是这个A之前的P个数*这个A之后T个数。

    #include<cstdio>
    #include<cstring>
    
    long long MOD=1e9+7;
    const int maxn=1e5+10;
    
    long long dp1[maxn],dp2[maxn];
    char s[maxn];
    
    int main()
    {
        scanf("%s",s);
        memset(dp1,0,sizeof dp1);
        if(s[0]=='P') dp1[0]=1;
        for(int i=1;s[i];i++)
        {
            dp1[i]=dp1[i-1];
            if(s[i]=='P') dp1[i]++;
        }
        memset(dp2,0,sizeof dp2);
        int len=strlen(s);
        if(s[len-1]=='T') dp2[len-1]=1;
        for(int i=len-2;i>=0;i--)
        {
            dp2[i]=dp2[i+1];
            if(s[i]=='T') dp2[i]++;
        }
        long long ans=0;
        for(int i=1;s[i];i++)
        {
            if(s[i]=='A')
            ans=(ans+dp1[i-1]*dp2[i+1])%MOD;
        }
        printf("%lld
    ",ans);
        return 0;
    }
  • 相关阅读:
    [译]GLUT教程
    [译]GLUT教程
    [译]GLUT教程
    [译]GLUT教程
    [译]GLUT教程
    [译]GLUT教程
    [译]GLUT教程
    表单
    列表、表格与媒体元素
    HTML5基础
  • 原文地址:https://www.cnblogs.com/zufezzt/p/5641654.html
Copyright © 2011-2022 走看看