长春理工大学第十四届程序设计竞赛(重现赛)M.Orx Zone

链接:https://ac.nowcoder.com/acm/contest/912/M

题意:

Daenerys Stormborn, 风暴中出生的丹尼莉丝,the Unburnt, 烧不死的,Queen of Meereen, 弥林女王,Queen of the Andals and the Rhoynar and the First Men, 安达尔人,罗伊那人,和先民的女王,Lord of the Seven Kingdoms, 七国之主,Protector of the Realm, 疆域保护者,Khaleesi of the Great Grass Sea, 多斯拉克海的女主,Breaker of Shackles, 打破铐镣者,Mother of Dragons, 龙母. 强如龙母也只有这么点名号

垃圾rx,保龄球下水道选手rx,俄罗斯方块大师rx,🏆选手xr,手速狗xr,练习时长两年半的acm练习生rx,线段树大师rx,数竞选手rx,手游忠实厨力玩家xr,下水道英语老师rx,图论大师rx,大珩班尖子生xr...txr的名号存在于千千万万的iXiang心中,无穷无尽

您作为iXiang,十分热衷于统计txr的名号数,现在有一个全部由小写字母组成的字符串S,字符串中同时包含'r','x'(无序)的非空子串数为txr的名号数


一个字符串s被称作另一个字符串S的非空子串,表示为S=XsY(X,Y可为空串,s不可为空串)

思路:

记录r和x的位置。

每次往后跑的时候增加min(r,x)的字串个数,每当遇到r或x就更新位置。

代码:

#include <bits/stdc++.h>
 
using namespace std;
 
typedef long long LL;
const int MAXN = 3e5 + 10;
const int MOD = 1e9 + 7;
int n, m, k, t;
 
int main()
{
    string s;
    cin >> s;
    int r = 0, x = 0;
    LL res = 0;
    for (int i = 0;i < s.length();i++)
    {
        if (s[i] == 'r')
            r = i+1;
        if (s[i] == 'x')
            x = i+1;
        res += min(r, x);
    }
    cout << res << endl;
 
    return 0;
}

  

posted @ 2019-06-08 23:54  YDDDD  阅读(211)  评论(0编辑  收藏  举报