欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

试题历届试题子串分值和

时间:2023-06-05

资源限制

时间限制:1.0s   内存限制:256.0MB

问题描述

对于一个字符串 S,我们定义 S 的分值 f(S) 为 S 中出现的不同的字符个数。例如 f("aba")=2,f("abc")=3, f("aaa")=1。

现在给定一个字符串 S[0..n−1](长度为 n),请你计算对于所有 S 的非空子串 S[i..j](0≤i≤j

输入格式

输入一行包含一个由小写字母组成的字符串 S。

输出格式

输出一个整数表示答案。

样例输入

ababc

样例输出

28

样例说明

子串 f值a 1ab 2aba 2abab 2ababc 3 b 1 ba 2 bab 2 babc 3 a 1 ab 2 abc 3 b 1 bc 2 c 1

None

评测用例规模与约定

对于 20% 的评测用例,1≤n≤10;

对于 40% 的评测用例,1≤n≤100;

对于 50% 的评测用例,1≤n≤1000;

对于 60% 的评测用例,1≤n≤10000;

对于所有评测用例,1≤n≤100000。

看到题目第一想法就是暴力求解,很显然超时。

#include#includeusing namespace std;typedef long long ll;int main(){string st;ll sum=0,n,a[26]={0};cin>>st;n=st.length();for(int i=0;i

在网上找到一个神奇的公式:单个字符的值((下标 + 1)x(字符串长度 - 下标) )

如果一个字符重复出现( (字符串长度 - 下标))x((当前位置 - 前一个位置));

#include#includeusing namespace std;typedef long long ll;int main(){string st;ll sum=0,n,a[26]={0};cin>>st;n=st.length();for(int i=0;i

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。