躲藏

  • 题目链接:躲藏
  • 如果没有权限看题,请看下图

  • 题目思路:dp,因为求的是Cwbc作为子序列出现的次数,且不区分大小写,那我们就把整个序列全化为大写,用四个变量(e1,e2,e3,e4)来记录以c、w、b、c出现的次数,我们不难得出
  • 代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #define gc getchar()
    #define ll long long
    #define Maxn 200010
    #define mo 2000120420010122
    using namespace std;
    char s[Maxn];
    ll e1,e2,e3,e4;
    int main() {
    while(scanf("%s",s+1)!=EOF) {
    e1=e2=e3=e4=0;
    int lens=strlen(s+1);
    for(int i=1; i<=lens; i++) {
    if(s[i]>='a'&& s[i]<='z') s[i]-=32;
    if(s[i]=='C')
    e1++;
    if(s[i]=='W')
    e2+=(e1)%mo;
    if(s[i]=='B')
    e3+=(e2)%mo;
    if(s[i]=='C')
    e4+=(e3)%mo;
    }
    printf("%lld\n",e4%mo);
    }
    return 0;
    }
rp++