题目 2572: 蓝桥杯2020年第十一届省赛真题-子串分值

简介: 题目 2572: 蓝桥杯2020年第十一届省赛真题-子串分值

时间限制: 1s 内存限制: 128MB 提交: 1387 解决: 396

题目描述


对于一个字符串S,我们定义S 的分值 f(S) 为S中恰好出现一次的字符个数。例如f (”aba”) = 1,f (”abc”) = 3, f (”aaa”) = 0。

现在给定一个字符串S[0…n-1](长度为n),请你计算对于所有S的非空子串S[i…j](0 ≤ i ≤ j < n), f (S[i… j]) 的和是多少。


输入格式

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



输出格式

输出一个整数表示答案。

样例输入

复制

ababc


样例输出

复制

21


提示


样例说明:


子串f值:


a     1

ab    2

aba   1

abab  0

ababc 1

b    1

ba   2

bab  1

babc 2

 a   1

 ab  2

 abc 3

  b  1

  bc 2

   c 1


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

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

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

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

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


从C语言网学来的方法,思路十分巧妙。

#include <bits/stdc++.h>
using namespace std;
int m[27][3];//存值,0,1,2三个下标分别代表现在所处位置和前两个所处位置
string s;
int main()
{
    cin>>s;
    int i;
    long long sum=0;
    long long qian=0;
    for(i=0;i<s.length();i++)
    {
        int x=s[i]-'a';
        m[x][0]=i+1;//存位置
        qian=qian+(m[x][0]-m[x][1])-(m[x][1]-m[x][2]);//可能出现在的字串数
        sum=sum+qian;
        m[x][2]=m[x][1];//更新状态
        m[x][1]=m[x][0];//更新状态
    }
    printf("%d\n",sum);
    return 0;
}


还有一种是我自己写的,但会超时,思路也比较简单,使用set直接遍历,可以快速拿分。

#include <iostream>
#include <set>
#include <vector>
using namespace std;
int main() {
  string s;
  set<char> s1;
  int cnt = 0;
  int t = 0;
  cin >> s;
  int size = s.size();
  for (int i = 0; i < size; i++) {
    s1 = {};
    for (int j = i; j < size; j++) {
      s1.insert(s[j]);
      cnt += s1.size();
      t++;
    }
  }
  cout << cnt;
  return 0;
}



相关文章
|
2天前
|
测试技术
题目1444:蓝桥杯2014年第五届真题斐波那契
题目1444:蓝桥杯2014年第五届真题斐波那契
22 0
蓝桥杯历年真题题解----2020年-- 子串分值和
蓝桥杯历年真题题解----2020年-- 子串分值和
|
10月前
|
人工智能 移动开发 机器人
蓝桥杯AcWing 题目题解 - 二分与前缀和、差分
蓝桥杯AcWing 题目题解 - 二分与前缀和、差分
105 0
|
10月前
蓝桥杯AcWing 题目题解 - 递归与递推
蓝桥杯AcWing 题目题解 - 递归与递推
|
11月前
|
算法 前端开发
蓝桥杯 —— Web前端(算法类)【标题即题目链接,点击查看具体要求】
蓝桥杯 —— Web前端(算法类)【标题即题目链接,点击查看具体要求】
151 0
|
11月前
|
前端开发 算法
蓝桥杯 —— Web前端(页面布局类【Flex 布局】)【标题即题目链接,点击查看具体要求】
蓝桥杯 —— Web前端(页面布局类【Flex 布局】)【标题即题目链接,点击查看具体要求】
167 0
|
11月前
|
JSON 前端开发 JavaScript
蓝桥杯 —— Web前端(数据交互类)【标题即题目链接,点击查看具体要求】
蓝桥杯 —— Web前端(数据交互类)【标题即题目链接,点击查看具体要求】
125 0
|
11月前
|
自然语言处理 JavaScript 前端开发
蓝桥杯 —— Web前端(功能实现类)【标题即题目链接,点击查看具体要求】
蓝桥杯 —— Web前端(功能实现类)【标题即题目链接,点击查看具体要求】
103 0
|
11月前
|
前端开发 算法
蓝桥杯 —— Web前端(Bug调试类)【标题即题目链接,点击查看具体要求】
蓝桥杯 —— Web前端(Bug调试类)【标题即题目链接,点击查看具体要求】
|
11月前
题目 2664: 蓝桥杯2022年第十三届省赛真题-求和
题目 2664: 蓝桥杯2022年第十三届省赛真题-求和