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

本文介绍了一种使用动态规划方法统计字符串中同时包含'r'和'x'的非空子串数量的算法。通过记录'r'和'x'出现的最大下标,可以高效地计算出满足条件的子串总数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

链接:https://ac.nowcoder.com/acm/contest/912/M
来源:牛客网
 

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

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

地址:https://ac.nowcoder.com/acm/contest/912/M

思路:DP,dp[i]表示以i为结尾的符合条件的子串个数,遍历str[i],记录‘r’和‘x’出现的最大下标ri,xi,

那么dp[i]=min(ri,xi)+1, ans+=dp[i]

Code:

#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;

int n;
string str;

int main()
{
	ios::sync_with_stdio(false);
	cin>>str;
	n=str.length();
	LL ans=0,ri=-1,xi=-1;
	for(int i=0;i<n;++i)
	{
		if(str[i]=='r')	ri=i;
		else if(str[i]=='x')	xi=i;
		ans+=min(ri,xi)+1;
	}
	cout<<ans<<endl;
	
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值