题目背景

2017国庆清北D1T1

题目描述

你是能看到第一题的 friends 呢。

——hja

何大爷对字符串十分有研究,于是天天出字符串题虐杀 zhx。何大爷今天为

字符串定义了新的权值计算方法。一个字符串由小写字母组成,字符串的权值

被定义为其中出现次数最多的字符的次数减去出现次数最少的字符的次数。 (注

意,在讨论出现最少的字符的时候,该字符必须至少出现一次)现在何大爷给

你一个字符串,何大爷想知道这个字符串的所有子串中权值最大的权值是多

少?

输入输出格式

输入格式:

第一行一个整数n,代表字符串的长度。

接下来一行n个小写字母,代表该字符串。

输出格式:

一行一个整数代表答案。

输入输出样例

输入样例#1:

10
aabbaaabab
输出样例#1:

3

说明

对于30%的数据,1<=n<=100

对于60%的数据,1 ≤ n ≤ 1000。

对于100%的数据,1 ≤n ≤ 10^6 .

不过,luogu神机。。

1000ms时限TLE仨点

3000ms时限AC

我不就改了改时限嘛,最高的点跑了不到500ms,然后就TLE了?

 /*
sum[r][a]-sum[r][b]-sum[l-1][a]-sum[l-1][b]
用minv[a][b]代替sum[l-1][a]-sum[l-1][b] sum[a][b]表示1~a中字母b出现的次数
minv[a][b]表示a与b个数的差的最小值
p[a][b]表示minv[a][b]出现的位置
*/
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std; int n,ans,minv[][],p[][],sum[],last[];
char s[]; int main()
{
scanf("%d",&n);
scanf("%s",s+);
for(int i=;i<=n;i++)
{
int c=s[i]-'a';
last[c]=i;
sum[c]++;
for(int j=;j<;j++)
{
if(c!=j&&sum[j]) //自己不能与自己比较,而且j必须出现过
{
ans=max(ans,sum[c]-sum[j]-minv[c][j]-(last[j]==p[c][j])); //last[j]==p[c][j]:如果j最后一次出现是在minv[c][j]最小的时候,那么要将这个j算上,因为如果不算这个j那么j就没出现过了
ans=max(ans,sum[j]-sum[c]-minv[j][c]-(last[j]==p[j][c])); //同理
}
}
for(int j=;j<;j++)
{
if(sum[c]-sum[j]<minv[c][j]) minv[c][j]=sum[c]-sum[j],p[c][j]=i; //更新差的最小值和出现位置
if(sum[j]-sum[c]<minv[j][c]) minv[j][c]=sum[j]-sum[c],p[j][c]=i;
}
}
printf("%d",ans);
return ;
}

2017.10.1 国庆清北 D1T1 zhx的字符串题的更多相关文章

  1. 2017.10.4 国庆清北 D4T2 正方形

    题目描述 在一个10000*10000的二维平面上,有n颗糖果. LYK喜欢吃糖果!并且它给自己立了规定,一定要吃其中的至少C颗糖果! 事与愿违,LYK只被允许圈出一个正方形,它只能吃在正方形里面的糖 ...

  2. 2017.10.6 国庆清北 D6T2 同余方程组

    题目描述 求关于x 的同余方程组 x%a1 = b1 x%a2 = b2 x%a3 = b3 x%a4 = b4 的大于等于0 的最小整数解. 输入输出格式 输入格式: 一行8 个整数,表示a1; b ...

  3. 2017.10.6 国庆清北 D6T1 排序

    题目描述 小Z 有一个数字序列a1; a2; .... ; an,长度为n,小Z 只有一个操作:选 定p(1<p<n),然后把ap 从序列中拿出,然后再插⼊到序列中任意位置. 比如a 序列 ...

  4. 2017.10.3 国庆清北 D3T3 解迷游戏

    题目描述 LYK进了一家古董店,它很想买其中的一幅画.但它带的钱不够买这幅画. 幸运的是,老板正在研究一个问题,他表示如果LYK能帮他解出这个问题的话,就把这幅画送给它. 老板有一个n*m的矩阵,他想 ...

  5. 2017.10.3 国庆清北 D3T2 公交车

    题目描述 LYK在玩一个游戏. 有k群小怪兽想乘坐公交车.第i群小怪兽想从xi出发乘坐公交车到yi.但公交车的容量只有M,而且这辆公交车只会从1号点行驶到n号点. LYK想让小怪兽们尽可能的到达自己想 ...

  6. 2017.10.3 国庆清北 D3T1 括号序列

    题目描述 LYK有一个括号序列,但这个序列不一定合法. 一个合法的括号序列如下: ()是合法的括号序列. 若A是合法的括号序列,则(A)是合法的括号序列. 若A和B分别是合法的括号序列,则AB是合法的 ...

  7. 2017.10.4 国庆清北 D4T1 财富

    (其实这题是luogu P1901 发射站 原题,而且数据范围还比luogu小) 题目描述 LYK有n个小伙伴.每个小伙伴有一个身高hi. 这个游戏是这样的,LYK生活的环境是以身高为美的环境,因此在 ...

  8. 2017.10.7 国庆清北 D7T1 计数

    题目描述 给出m个数a[1],a[2],…,a[m] 求1~n中有多少数不是a[1],a[2],…,a[m]的倍数. 输入输出格式 输入格式: 输入文件名为count.in. 第一行,包含两个整数:n ...

  9. 2017.10.5 国庆清北 D5T1 拼不出的数

    题目描述 3 个元素的集合{5,1,2}的所有子集的和分别是0,1,2,3,5,6,7,8.发现最小的不能由该集合子集拼出的数字是4. 现在给你一个n个元素的集合,问你最小的不能由该集合子集拼出的数字 ...

随机推荐

  1. maven的setting配置文件中mirror和repository的区别

    当maven需要到的依赖jar包不在本地仓库时, 就需要到远程仓库下载 . 这个时候如果mavensetting.xml中配置了镜像 , 而且镜像配置的规则中匹配到目标仓库时 , maven认为目标仓 ...

  2. sqoop与hbase导入导出数据

    环境:sqoop1.4.6+hadoop2.6+hbase1.1+mysql5.7 说明: 1.文中的导入导出的表结构借鉴了网上的某篇博客 2.mysql导入hbase可以直接通过sqoop进行 3. ...

  3. ArcGIS Engine中C#开发不能引用ESRI.ArcGIS.AxControls问题

    问题:ArcGIS Engine中C#开发不能引用ESRI.ArcGIS.AxControls问题 解决方法:将这里的特定版本改成“False”即可.

  4. 全网独发gensim中similarities.Similarity用法

    index = similarities.MatrixSimilarity(lsi[corpus]) # 管网的原文翻译如下: 警告:similarities.MatrixSimilarity类仅仅适 ...

  5. 77.JS本地保存数据的几种方法

    1.Cookie 这个恐怕是最常见也是用得最多的技术了,也是比较古老的技术了.COOKIE优点很多,使用起来很方便 但它的缺点也很多: 比如跨域访问问题:无法保存太大的数据(最大仅为4KB):本地保存 ...

  6. 在Spring中使用AspectJ实现AOP

    在Spring中,最常用的AOP框架是AspectJ,使用AspectJ实现AOP有2种方式: 基于XML的声明式AspectJ 基于注解的声明式AspectJ 基于XML的声明式AspectJ 1. ...

  7. VS2017 密钥

    需要的请自取- Enterprise: NJVYC-BMHX2-G77MM-4XJMR-6Q8QF Professional: KBJFW-NXHK6-W4WJM-CRMQB-G3CDH

  8. 二十七、mysql如何确保数据不丢失?有几点值得我们借鉴

    本篇文章我们先来看一下mysql是如何确保数据不丢失的,通过本文我们可以了解mysql内部确保数据不丢失的原理,学习里面优秀的设计要点,然后我们再借鉴这些优秀的设计要点进行实践应用,加深理解. 预备知 ...

  9. selenium模拟鼠标键盘操作

    简单操作: 1.点击(鼠标左键)页面按钮:click() 2.清空输入框:clear() 3.输入字符串:send_keys()submit提交表单: 1.一般情况可以点击搜索按钮来搜索 2.也可以用 ...

  10. oracle执行计划(二)----如何查看执行计划

    目录: (一)六种执行计划  (1)explain plan for  (2)set autotrace on  (3)statistics_level=all  (4)dbms_xplan.disp ...