题目: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);
}
}

最新文章

  1. 关于IOS免证书真机安装的过程和问题
  2. iOS开发——项目需求-快速回到当前界面的顶部
  3. 第一篇:SOUI是什么?
  4. xsocks 64位平台下编译问题小记
  5. 使用HttpOnly提升Cookie安全性
  6. 使用Windows的分析等待链(analyze wait chain)来诊断没用响应的应用
  7. iOS更新之DFU模式和恢复模式
  8. accept: Invalid argument linux 网络编程
  9. spring boot 拦截器添加
  10. 小白的Python之路 day4 装饰器前奏
  11. supervisord支持扩展(xml RPC API &amp; Third Party Applications and Libraries)
  12. 阅读&lt;All Digital VCXO Replacement for Gigabit Transceiver Applications&gt;笔记---XAPP589
  13. Windows ElasticSearch中文分词配置
  14. Oracle锁表查询和解锁方法
  15. html css 伪样式
  16. C#socket编程序(二)
  17. HUE配置文件hue.ini 的liboozie和oozie模块详解(图文详解)(分HA集群)
  18. webstorm中导入git项目
  19. 考试星陈沧:借助Testin云測加速实现”考试电子化”目标
  20. tomcat优化方案(转)

热门文章

  1. 在VMware下创建windows2008虚拟机
  2. Eureka 系列(06)消息广播(下):TaskDispacher 之 Acceptor - Worker 模式
  3. UML指南系列——活动图
  4. Laravel4 最佳学习代码以及资料推荐(转)
  5. pip安装任何包都出现问题
  6. Spring注解之@Component、@Controller、@Service、@Repository
  7. FastAdmin 关于列表渲染文字过长导致页面难以管理的问题
  8. 快速上手的Glide4.x教程
  9. JAVA基础学习-多态 对象转型 final
  10. shell编写启动脚本