【题目描述】

一个字符串的前缀是指包含该字符第一个字母的连续子串,例如:abcd的所有前缀为a, ab, abc, abcd。

给出一个字符串S,求其所有前缀中,字符长度与出现次数的乘积的最大值。

例如:S = "abababa" 所有的前缀如下:

"a", 长度与出现次数的乘积 1 * 4 = 4,

"ab",长度与出现次数的乘积 2 * 3 = 6,

"aba", 长度与出现次数的乘积 3 * 3 = 9,

"abab", 长度与出现次数的乘积 4 * 2 = 8,

"ababa", 长度与出现次数的乘积 5 * 2 = 10,

"ababab", 长度与出现次数的乘积 6 * 1 = 6,

"abababa", 长度与出现次数的乘积 7 * 1 = 7. 其中"ababa"出现了2次,二者的乘积为10,是所有前缀中最大的

【输入格式】

输入字符串T, (1 <= L <= 1000000, L为T的长度),T中的所有字符均为小写英文字母。 (注意:原题是L <= 10W,这里加强一下!)

【输出格式】

输出所有前缀中字符长度与出现次数的乘积的最大值。

【样例输入】

abababa

【样例输出】

10

【提示】

【来源】

这题也是醉了啊,。。

一开始看到这题的数据范围的时候就感觉有点诡异

然后写了个裸的KMP果不其然只得60分

后来看了一下老师的题解发现根本不用跑KMP,

只要从后往前扫一遍将i和P[i]的值分别计算一下就可以

可是还是有两个点超时

搞了半天才发现原来三目运算符要比if快很多!!!!

坑爹啊。。。、,!!!!=.=

 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char a[];
int p [];
int cs[];
int la,lb;
int ans=-;
void makep()
{
p[]=-;
int j=;
for(int i=;i<la;i++)
{
j=p[i-];
while(a[i]!=a[j+]&&j>=)j=p[j];
p[i]=a[i]==a[j+]?j+:-;
}
}
int main()
{
freopen("string_maxval.in","r",stdin);
freopen("string_maxval.out","w",stdout);
gets(a);
la=strlen(a);
makep();
for(int i=la-;i>=;i--)
{
cs[i]++;
cs[p[i]]+=cs[i];
if(cs[i]*(i+)>ans)
ans=cs[i]*(i+);
}
printf("%d",ans);
return ;
}

最新文章

  1. iOS_UIImage_jpg&lt;--&gt;png转换
  2. Freemarker的初次使用之FTL标签嵌套与map的使用
  3. Android必会小功能总结
  4. 动态加载JS脚本的4种方法
  5. Apache提示You don&#39;t have permission to access / on this server问题解决
  6. jquery ajax提交json格式的数据,后台接收并显示各个属性
  7. 让2个并列的div根据内容自动保持同等高度js
  8. SWIFT学习笔记01
  9. Linux 多进程多线程相关概念
  10. Tmux 入门
  11. Scrapy案例01-爬取传智播客主页上的老师信息
  12. 第七节:利用CancellationTokenSource实现任务取消和利用CancellationToken类检测取消异常。
  13. adb.exe 已停止工作解决办法
  14. 防cc攻击策略
  15. 小奶狗给小喵咪上CSS课程
  16. 计算概论(A)/基础编程练习1(8题)/3:晶晶赴约会
  17. linux查看各服务状态以及开启和关闭
  18. Unity3d Http Get请求
  19. [sql]MySQL数据备份小结
  20. before伪类的超有用应用技巧——水平菜单竖线分隔符

热门文章

  1. shell之sort和uniq 及wc 的使用
  2. [HAOI 2012] Road
  3. [APIO 2017] 商旅
  4. Ubuntu18.04 安装 JDK7
  5. main.o: In function `__static_initialization_and_destruction_0′:
  6. centos时区
  7. TypeScript完全解读(26课时)_4.TypeScript完全解读-接口
  8. Linux系统调用及其效率
  9. 51nod1640 【最小生成树】
  10. [Xcode 实际操作]一、博主领进门-(15)读取当前应用的信息