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

    对一个确定位置的A来说,以它形成的PAT的个数等于它左边P的个数乘以它右边T的个数。

    例如对字符串APPAPT的中间那个A来说,它左边有两个P,右边有一个T,因此这个A能形成的PAT的个数就是2x1=2。

    于是问题就转换为,对字符串中的每个A,计算它左边P的个数与它右边T的个数的乘积,然后把所有A的这个乘积相加就是答案。

    const int N=1e5+10;
    int cntp[N],cntt[N];
    char s[N];
    int n;
    
    int main()
    {
        cin>>s+1;
        n=strlen(s+1);
    
        for(int i=1;i<=n;i++)
            if(s[i] == 'P') cntp[i]=cntp[i-1]+1;
            else cntp[i]=cntp[i-1];
    
        for(int i=n;i;i--)
            if(s[i] == 'T') cntt[i]=cntt[i+1]+1;
            else cntt[i]=cntt[i+1];
    
        int res=0;
        for(int i=1;i<=n;i++)
            if(s[i] == 'A')
                res=(res+cntp[i]*cntt[i])%mod;
        cout<<res<<endl;
    
        //system("pause");
        return 0;
    }
    
  • 相关阅读:
    安装开发工具
    CSS基础
    CSS动画
    CSS效果
    CSS布局
    CSS预处理语言
    React开发笔记
    Vue2.0学习笔记
    Vue-cli3.0开发笔记
    项目开发技巧
  • 原文地址:https://www.cnblogs.com/fxh0707/p/14397433.html
Copyright © 2011-2022 走看看