1 条题解

  • 0
    @ 2025-4-7 15:37:48

    题解

    题目意思很显然,就是读入字符串后,利用循环进行一次遍历,每次循环用分支结构统计wa、Wa以及WA的次数。其中,对于WA统计时,需要乘以基数后进行累加。

    考虑以下极端情况:

    对于长度为1e6的字符串,假设均由" WAWAWAWA··· "组成,那么最后的期待值为:51+52+53+...+5(51e5)5*1+5*2+5*3+...+5*(5*1e5),运用等差数列求和公式后可以发现,结果超过了int整数的范围,因此,我们将结果保存为long long类型就没有问题了。

    程序

    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    
    int main ()
    {
        string s;
        cin>>s;
        int len=s.size();
        ll ans=0;//long long类型
        int base=1;//次数累计
        for(int i=0;i<len-1;i++)//循环到倒数第二位
        {
            if(s[i]=='w'&&s[i+1]=='a')//wa情况,期望值+1
                ans+=1;
            else if(s[i]=='W')
            {
                if(s[i+1]=='a')//Wa情况,期望值+3
                    ans+=3;
                else if(s[i+1]=='A')//WA情况,期望值+5*次数,次数+1
                    ans+=5*(base++);
            }
        }
        cout<<ans;
    
        return 0;
    }
    
    • 1

    信息

    ID
    363
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    (无)
    递交数
    50
    已通过
    24
    上传者