1012 Yiwen with Sqc

题意:

  • 给出一个字符串,计算每个字母在每个区间出现次数的平方和。

思路:

  • 可以发现不同字母之间没有影响,所以分别考虑每一种字母,比如考虑 ‘a’ , ‘a’ 在字符串中一共出现cnt次,第i次的位置为 p[i](p[0]=0, p[cnt+1]=n+1),记len[i] = p[i+1]-p[i],即两个相邻 ‘a’ 之间的距离。
  • 首先固定左端点为1,移动右端点,可以发现答案=sum{k=1->cnt, len[k]*k^2},因为右端点在两个字母间移动时字母数量不变,对答案贡献也不变,可以直接累加。然后固定右端点,移动左端点,可以发现对于p[i]到p[i+1]之间的位置,答案为 sum{ k=i+1->cnt, len[k]*(k-i)^2}。
  • 考虑维护两次差分对复杂度进行优化,最后O(n)可以通过。

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int mod = 998244353;int calc(vector<int>vc){int ans = 0, per = 0, dif = 0;for(int i = 1; i < vc.size(); i++){ans = (1ll*ans+1ll*per*(vc[i]-vc[i-1]))%mod;dif = (1ll*dif+2ll*vc[i-1]+vc[i]-vc[i-1])%mod;per = (per+dif)%mod;}return ans;
}int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int T;  cin>>T;while(T--){string s;  cin>>s;  s="1"+s;int n = s.size()-1;vector<int>vc[30];for(int i = 0; i <= 25; i++)vc[i].push_back(0);for(int i = 1; i <= n; i++)vc[s[i]-'a'].push_back(i);for(int i = 0; i <= 25; i++)vc[i].push_back(n+1);int ans = 0;for(int i = 0; i <= 25; i++)ans = (ans+calc(vc[i]))%mod;cout<<ans<<"\n";}return 0;
}

【HDOJ7055】Yiwen with Sqc(字符串,区间出现次数平方和,两次差分)相关推荐

  1. 找出一个字符串中出现次数最多的字_487,重构字符串

    想了解更多数据结构以及算法题,可以关注微信公众号"数据结构和算法",每天一题为你精彩解答. 问题描述 给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同. 若可行 ...

  2. Java案例——统计字符串中每个字符串出现的次数

    统计字符串中每个字符串出现的次数 需求: 1.键盘录入一个字符串,要求统计字符串中每个字符串出现的次数 举例:键盘录入"aababcabcdabcde" 在控制台输出:" ...

  3. 删除字符串中出现次数最少的字符

    在公交车上看一博客实现删除字符串中出现次数最少的字符,认为里面使用数组来作为hash很好,所以我就自己实现一遍. 要求:实现删除一个字符串中出现次数最少的字符.输出删除后的字符,要求安装原来顺序输出. ...

  4. python使用正则表达式统计字符串中出现次数最多的数字

    python使用正则表达式统计字符串中出现次数最多的数字 #python使用正则表达式统计字符串中出现次数最多的数字 # find the most occurring element import ...

  5. JAVA----------------------华为机试--------------------------删除字符串中出现次数最少的字符...

    题目描述 实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除.输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序. 输入描述: 字符串只包含小写英文字母, 不考虑非法输入,输 ...

  6. HJ23 删除字符串中出现次数最少的字符

    描述 实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除.输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序. 注意每个输入文件有多组输入,即多个字符串用回车隔开 输入描述: ...

  7. mysql查找内容某字符串出现的次数_查找MySQL中特定字符串出现的次数?

    使用LENGTH()此.让我们首先创建一个表-mysql> create table DemoTable -> ( -> Value text -> ); 使用插入命令在表中插 ...

  8. Java求字符串中出现次数最多的字符

    Java求字符串中出现次数最多的字符  [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51933611      Java ...

  9. python 字符串去重且相同字符最多出现2次_Python实现计算字符串中出现次数最多的字符示例...

    本文实例讲述了Python实现计算字符串中出现次数最多的字符.分享给大家供大家参考,具体如下: 1. 看了网上挺多写的方法都没达到我所需要的效果,我干脆自己写了个方法共享给大家 ee = 'aa111 ...

最新文章

  1. NSRunLoop详解
  2. 循环结果添加到集合_Java Note-数据结构(4)集合
  3. 如何查看CRM WebUI,C4C和Hybris里的页面技术信息
  4. Python学习(三)基础
  5. MySQL Event
  6. 何小鹏退出UC浏览器母公司股东名单
  7. opencv python 读取图像/显示图像/保存图像
  8. 三菱plc pwm指令_三菱plc功能指令集大全和自学基础
  9. 功能测试转测试开发的正确姿势
  10. 2022年工作日节假日数据
  11. 神经元图片结构图,人脑神经元图片
  12. Django使用manager.py 运行项目,或者uWSGI进行部署项目,使用Nginx进行负载均衡
  13. 带表情字符插入mysql字段报错问题处理 Incorrect string value: ‘\xF0\xA5\x8C\x93\xE5\x85...‘ for column ‘nickName‘
  14. Epoch Based Reclamation 的个人理解
  15. eclipse出现the user operation is waitting for background work to complete异常
  16. 【京东春招】别人的面经中记录的问题
  17. CF1139C Edgy TreesDFS求连通块大小、思维
  18. Linux下Firefox中配置Jre
  19. 2014年5月3日整理java笔试题+答案和自己的代码
  20. 计算机视觉英语论文,计算机视觉导论论文中英双语版(10页)-原创力文档

热门文章

  1. matplotlib 可视化 —— 移动坐标轴(中心位置)
  2. 黄金分割比的重新理解
  3. python不会英语不会数学怎么自学-数学不好、英语不好、非本专业,想学Python数据分析,能安排吗?...
  4. python软件-Python软件下载|Python最新版本v3.5.1 下载_当游网
  5. 浅谈语音识别技术的发展趋势与应用前景 - 全文
  6. 车机“智能互联”深度评测:第三弹 吉利博越PRO与GKUI 19
  7. 消费者生产者代码之---一步一步带你写
  8. nginx 负载均衡 404_Nginx+.Net Core实现项目负载均衡
  9. atxserver运行没有反应_关于厌氧反应器的酸化现象与恢复措施!
  10. 高通骁龙cpu排行_最新手机性能排行榜出炉:高通骁龙865霸榜,前十不见华为!...