pdf效果太差,转成word效果依旧差,只好转成jpg传了。

这一题用到了“归类”的思想,令s(i, a)表示前i个字体,字符a出现的次数。那么ans一定等于一个

(  s(i, a) - s(j, a)  ) - (  s(i, b) - s(j, b)  ),

归一下类,得到ans等于一个

(  s(i, a) - s(i, b)  ) - (  s(j, a) - s(j, b)  ).

所以我们只需要读入一个字符a,然后枚举那个字符b,在用上式计算答案,要保存前面的s(j, a) - s(j, b)的最小值。

然而还是有一种特殊情况,举个例子,aaabbbb,如果直接向上面那样做得到的答案是4,对应的是bbbb那一串,即4个b减去0个a,但是出现0次并不算出现,所以我们需要保存一个cj[26][26],其中cj[a][b]表示s(j, a) - s(j, b)取到最小值时,b字符出现的个数。那么如果s(i, b) == cj(a, b)的话,就不能更新答案,因为这一段是没有字符b的。

#include <cstdio>
#include <algorithm>
#include <cstring>const int maxn = 1000005;int n, a[maxn], mn[30][30], ans, s[30], cj[30][30];
char ch;int main(void) {freopen("string.in", "r", stdin);freopen("string.out", "w", stdout);scanf("%d", &n);while ((ch = getchar()) < 'a');a[1] = ch - 'a';for (int i = 2; i <= n; ++i) {a[i] = getchar() - 'a';}for (int i = 1; i <= n; ++i) {++s[a[i]];for (int j = 0; j < 26; ++j) {if (a[i] == j) {continue;}if (s[a[i]] > s[j]) {if (s[j] > cj[a[i]][j]) {ans = std::max(ans, s[a[i]] - s[j] - mn[a[i]][j]);}}else if (s[a[i]] < s[j]) {ans = std::max(ans, s[j] - s[a[i]] - mn[j][a[i]]);}if (s[a[i]] - s[j] < mn[a[i]][j]) {mn[a[i]][j] = s[a[i]] - s[j];cj[a[i]][j] = s[j];}if (s[j] - s[a[i]] < mn[j][a[i]]) {mn[j][a[i]] = s[j] - s[a[i]];cj[j][a[i]] = s[a[i]];}}}printf("%d\n", ans);return 0;
}

  

转载于:https://www.cnblogs.com/ciao-sora/p/6058161.html

[ZPG TEST 115] 字符串【归类思想】相关推荐

  1. [2021.1.31多校省选模拟12]随机变换的子串(线段树维护分治/字符串/自动机思想)

    [2021.1.31多校省选模拟12]随机变换的子串 对于这三种操作,我们惊奇地发现有这样的性质,所有长度大于4的字符串都可以通过变换变为长度小于等于4的字符串,那么查询本质不同的字符串我们只需要处理 ...

  2. iOS HTML标签字符实体,转译字符串归类大全 【转载】

    为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希 ...

  3. Go 语言实现字符串匹配算法 -- BF(Brute Force) 和 RK(Rabin Karp)

    今天介绍两种基础的字符串匹配算法,当然核心还是熟悉一下Go的语法,巩固一下基础知识 BF(Brute Force) RK(Rabin Karp) 源字符串:src, 目标字符串:dest: 确认des ...

  4. [剑指offer]面试题第[58]题[Leetcode][JAVA][第151题][翻转单词][字符串常用函数总结]

    [问题描述] 给定一个字符串,逐个翻转字符串中的每个单词.示例 1: 输入: "the sky is blue" 输出: "blue is sky the" [ ...

  5. 数据结构与算法之美笔记——基础篇(下):图、字符串匹配算法(BF 算法和 RK 算法、BM 算法和 KMP 算法 、Trie 树和 AC 自动机)

    图 如何存储微博.微信等社交网络中的好友关系?图.实际上,涉及图的算法有很多,也非常复杂,比如图的搜索.最短路径.最小生成树.二分图等等.我们今天聚焦在图存储这一方面,后面会分好几节来依次讲解图相关的 ...

  6. 四、SQL函数②(字符串函数)

    字符串函数:用户的密码.电子邮箱地址.证件号码等都是以字符串类型保存在数据库中的. 计算字符串长度 LENGTH()函数用来计算一个字符串的长度.该函数接受一个参数,此参数为待计算的字符串表达式,在M ...

  7. glibc 知:手册05:字符串和数组

    文章目录 1. 前言 2. 字符串和数组实用程序 2.1. 字符串的表示 2.2. 字符串和数组约定 2.3. 字符串长度 2.4. 复制字符串和数组 2.5. 连接字符串 2.6. 复制时截断字符串 ...

  8. 数据结构C语言版字符串,数据结构c语言版

    数据结构c语言版是一款非常使用的数据结构课程的编写和教材:它也可将软件作为学习数据结构.算法C程序设计的参数教材,只需要用户学习该软件之后,就算遇到在繁杂的代码也可以清晰的写出来,本书的钱半部分主要介 ...

  9. 3种解法 - 实现字符串压缩

    文章目录 题目 解法一(临时变量) 解法二(快慢指针) 解法三(Pythonic) 题目 字符串压缩.利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能.比如,字符串aabcccccaaa ...

最新文章

  1. C++中标准模板库std::vector的实现
  2. LeetCode Permutation Sequence(求排列中的第k个排列是什么)
  3. 零基础学Python:作用域详解
  4. UIAlertController的使用及其自定义
  5. 这款Python王者编辑器,集Pycharm和Sublime优点于一身
  6. Magical Sticks 棍子拼接
  7. 斑马888t打印机墨盒安装_硒鼓?墨盒?究竟哪个才是打印机的“灵魂伴侣”?...
  8. 波兰加密矿企GamerHash计划在韩国建立业务
  9. 人生苦短 我用Python
  10. c#时间 转换成java_Java与C#时间转换
  11. JAVA 基础算法汇总(持续更新)
  12. 基于MemFireCloud的电子图书馆开发指南(三)
  13. -XX:GCTimeRatio
  14. 通过工具来监控webService请求和返回时的数据(10级学员 韩晓爽课堂总结)
  15. jpa 人大金仓数据库方言_人大金仓+springboot配置
  16. 电商直播元年 微媒云播打造私域流量火爆商业新模式
  17. 小米装linux系统教程视频,小米5 miui8折腾Linux Deploy经验
  18. 华为数通笔记-NAT
  19. 2022亚马逊云科re:Invent,打开行业新格局
  20. 德国访问学者签证的材料准备

热门文章

  1. word度量单位无效_【一定要看】这篇Word毕业论文排版全攻略,25个技能请收藏好~...
  2. mysql 自增长id string_Mysql中获取刚插入的自增长id的三种方法归纳
  3. DB2查询主键、索引、表约束
  4. 【ICPC 2021网络赛2】The 2021 ICPC Asia Regionals Online Contest (II)签到题5题
  5. ROG幻14 AMD R7-4800H VM16安装macOS Catalina 10.15教程
  6. 【Codeforces 1426 D】Non-zero Segments,贪心,前缀和,数组子段统计
  7. 【CCCC】L2-014 列车调度 (25分),贪心,set维护序列
  8. 【NOIP2014】【Luogu2141】珠心算测验(枚举,合并两数组相同元素个数)
  9. php 地址获取百度经纬度,根据百度api获取一个地址的经纬度
  10. mysql 创建聚集索引_索引为什么会加快Mysql的查询速度?