拓展KMP求回文串
2024-08-30 23:26:53
题目:hdu3613;
题意:有26字母对应的价值,然后给出以个串,把它分成两段字串,如果字串是回文串,串的价值就是每个字符和,不是就为0。求最大价值。
分析:拓展KMP的应用求回文字串。
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string>
#include<string.h>
using namespace std;
const int max_=5e6+;
int extend1[max_],extend2[max_],v[],w[max_], nex[max_];
void getnext(string str)
{
int a=,p=;
int len=str.size(); nex[]=len;
for(int i=;i<len;i++)
{
if(i>=p||i+nex[i-a]>=p)
{
if(i>=p)
p=i;
while(str[p-i]==str[p]&&p<len)
p++;
nex[i]=p-i;
a=i;
}
else
nex[i]=nex[i-a];
}
}
void getextend(string str,string mo,int *ex)
{
int a=,p=;
getnext(mo);
int m=mo.size();
int len=str.size();
for(int i=;i<len;i++)
{
if(i>=p||i+nex[i-a]>=p)
{
if(i>=p)
p=i;
while(str[p]==mo[p-i]&&p<len&&p-i<m)
p++;
ex[i]=p-i;
a=i;
}
else
ex[i]=nex[i-a];
}
}
int main()
{
ios_base::sync_with_stdio();
cin.tie();
int t;
string S,T;
scanf("%d",&t);
while(t--)
{
int max_sum=-1e8;
for(int i=;i<;i++)
{
scanf("%d",&v[i]);
}
cin>>S;
int len=S.size();
for(int i=;i<len;i++)
{
if(i==)
w[i]=v[S[i]-'a'];
else
w[i]=w[i-]+v[S[i]-'a'];
}
T=S;
reverse(T.begin(),T.end());
getextend(S,T,extend1);
getextend(T,S,extend2);
for(int i=;i<len;i++)
{
int sum=;
if(i+extend1[i]==len)
sum+=w[len-]-w[i-];
if(len-i+extend2[len-i]==len)
sum+=w[i-];
max_sum=max(max_sum,sum);
}
printf("%d\n",max_sum);
}
}
最新文章
- 关于IOS免证书真机安装的过程和问题
- iOS开发——项目需求-快速回到当前界面的顶部
- 第一篇:SOUI是什么?
- xsocks 64位平台下编译问题小记
- 使用HttpOnly提升Cookie安全性
- 使用Windows的分析等待链(analyze wait chain)来诊断没用响应的应用
- iOS更新之DFU模式和恢复模式
- accept: Invalid argument linux 网络编程
- spring boot 拦截器添加
- 小白的Python之路 day4 装饰器前奏
- supervisord支持扩展(xml RPC API &; Third Party Applications and Libraries)
- 阅读<;All Digital VCXO Replacement for Gigabit Transceiver Applications>;笔记---XAPP589
- Windows ElasticSearch中文分词配置
- Oracle锁表查询和解锁方法
- html css 伪样式
- C#socket编程序(二)
- HUE配置文件hue.ini 的liboozie和oozie模块详解(图文详解)(分HA集群)
- webstorm中导入git项目
- 考试星陈沧:借助Testin云測加速实现”考试电子化”目标
- tomcat优化方案(转)
热门文章
- 在VMware下创建windows2008虚拟机
- Eureka 系列(06)消息广播(下):TaskDispacher 之 Acceptor - Worker 模式
- UML指南系列——活动图
- Laravel4 最佳学习代码以及资料推荐(转)
- pip安装任何包都出现问题
- Spring注解之@Component、@Controller、@Service、@Repository
- FastAdmin 关于列表渲染文字过长导致页面难以管理的问题
- 快速上手的Glide4.x教程
- JAVA基础学习-多态 对象转型 final
- shell编写启动脚本