AcWing 2868. 子串分值

文章目录

前言

还是实力不允许啊,要是实力允许我就一道一道中等题刷了。简单题真够呛。有些题看题解都是看老半天看不懂,假设是这种我是真感觉没必要钻研。我现在大三,要是看一遍题解看不懂就算了,果断放弃。真可以这么果断吗,不管是做题还是生活,真可以这么果断吗。看到省赛的数据还有部分的分数的,反正就是写个暴力放在那里就好了,准备明年的蓝桥杯和 9 月的 csp ,26 年 3 月的 csp 看时间,要是可以的话也参加一下。就当机试模拟考试了。查了一下,是三月底,那时候机试都结束了,那算了。

代码

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N=100010;
int l[N],r[N],p[30];
char s[N];
typedef long long LL;
int main(){
    scanf("%s",s+1);//从下标为 1 的位置开始存
    int n=strlen(s+1);
    for(int i=1;i<=n;i++){
        int t=s[i]-'a';
        //p 的下标表示的是这个是啥字母
        l[i]=p[t];//最开始的时候因为是全局数组,所以是 0 ,这里是特判了一下边界情况
        p[t]=i;//相当于每次就是该元素左边的元素
    }//表示当前的元素的位置,循环这块有点巧妙
    for(int i=0;i<26;i++){//这里映射的是每一个字母的位置
        p[i]=n+1;//右边界
    }
    for(int i=n;i>=1;i--){
        int t=s[i]-'a';
        r[i]=p[t];
        p[t]=i;
    }
    LL ans=0;
        ans+=(LL)(i-l[i])*(r[i]-i);//贡献法
    for(int i=1;i<=n;i++){
    }
    cout<<ans<<endl;
    return 0;
}

思路

看了一下,五个零,是十万。我知道的算法就是排序,二分,O(nlogn) 这个时间复杂度。这个题是啥意思啊。从一个字符串里面截取一段字符串,计算这段字符串的 f 函数的数值,对于所有的函数值求和,输出这个和。这么复杂。看题解,理解了一部分,不想放弃。又看了一遍,大概懂了。这种就挺难受的。因为这种大概懂,把代码删掉自己很难独立写出来。每行写了注释之后感觉也还好,就是循环那块有点难。多写几遍就好了。贡献法的关键就是要找到某一个字母相邻的两个相同的字母,假设没有就找边界,因为从下标为 1 开始存的,所以边界就是 0 和 n+1 .

相关推荐
json{shen:"jing"}5 分钟前
1-C语言的数据类型
c语言·c++·算法
im_AMBER19 分钟前
数据结构 13 图 | 哈希表 | 树
数据结构·笔记·学习·算法·散列表
LYFlied26 分钟前
【算法解题模板】动态规划:从暴力递归到优雅状态转移的进阶之路
数据结构·算法·leetcode·面试·动态规划
Hcoco_me1 小时前
RTMPose_JSON相关解读
算法·数据挖掘·json·聚类
高洁011 小时前
DNN案例一步步构建深层神经网络(二)
人工智能·python·深度学习·算法·机器学习
aini_lovee1 小时前
改进遗传算法求解VRP问题时的局部搜索能力
开发语言·算法·matlab
老蒋新思维2 小时前
反脆弱性设计:创始人IP与AI智能体如何构建愈动荡愈强大的知识商业|创客匠人
人工智能·网络协议·tcp/ip·算法·机器学习·创始人ip·创客匠人
Salt_07282 小时前
DAY 36 官方文档的阅读
python·算法·机器学习·github
明洞日记3 小时前
【VTK手册027】VTK 颜色连续映射:vtkColorTransferFunction 深度解析与实战指南
c++·图像处理·算法·vtk·图形渲染
B_lack0263 小时前
西门子PLC结构化编程_线性插值算法功能块
算法·pid·西门子plc·博途·线性插值·开环控制