算相对距离,下标从0开始可能会错,记得偏移(+1)

子串分值和
参考博客

此题是算每个字符在自己所能影响到子串的数量(即贡献值)

以后算字符串中的相对距离,且下标从0开始,都要进行+1偏移
(可以不看这句)若不进行+1偏移的话,pos[i]==0时,则有可能i的上一个位置是0号,也有可能i到目前为止是第一次出现

#include<bits/stdc++.h>
using namespace std;
#define ll long long
string str;
ll ans;
int pos[37];
int main(){
    cin >> str;
    int len=str.size();
    for(int i=0;i<len;++i){
        ans+=(ll)(len-i)*( i+1-pos[str[i]-'a'] );
        pos[str[i]-'a']=i+1;
    }
    cout << ans;
    return 0;
} 
全部评论

相关推荐

05-23 20:31
已编辑
武汉大学 Java
内向的柠檬精在研究求职打法:注意把武大标粗标大 本地你俩不是乱杀
点赞 评论 收藏
分享
双非阴暗爬行:我来看看笑死我了,这名字取得好想笑(没有不好的意思)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务