列表

详情


NC26145. Orx Zone

描述

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不可为空串)

输入描述

输入一个全部由小写字母组成的字符串S(1 <= S的长度 <= 1000000)

输出描述

输出一个整数x,代表txr的名号数

示例1

输入:

orztxr

输出:

7

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Java(javac 1.8) 解法, 执行用时: 299ms, 内存消耗: 24584K, 提交时间: 2019-07-22 16:30:05

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String S = sc.next();
		int r = 0, s = 0;
        long ans = 0;
		for (int i = 0; i < S.length(); i++) {
			if (S.charAt(i) == 'r')
				r = i + 1;
			if (S.charAt(i) == 'x')
				s = i + 1;
			ans = ans + Math.min(r, s);
			
		}
		System.out.println(ans);
	}

}

C++11(clang++ 3.9) 解法, 执行用时: 52ms, 内存消耗: 3604K, 提交时间: 2019-06-08 22:21:26

#include<bits/stdc++.h>
using namespace std;
string s;
int main()
{
    long long ans=0,ri=-1,xi=-1;
    cin>>s;
    for(int i=0;i<s.size();++i)
    {
        if(s[i]=='x') xi=i;
        else if(s[i]=='r') ri=i;
        ans+=min(ri,xi)+1;
    }
    cout<<ans<<endl;
    return 0;
}

C++14(g++5.4) 解法, 执行用时: 51ms, 内存消耗: 3616K, 提交时间: 2019-07-07 09:44:25

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
int main()
{
	string s;cin>>s;	
	int rr=0,xx=0;
	ll ans=0;
	for(int i=0;s[i];i++)
	{
		if(s[i]=='r') rr = i+1;
		if(s[i]=='x') xx = i+1;
		ans+=min(rr,xx);
	}
	printf("%lld",ans);
}

上一题