【题目链接】

点击打开链接

【算法】

正反两遍EXKMP,即可

【代码】

#include<bits/stdc++.h>
using namespace std;
#define MAXC 26
#define MAXL 500010 int T,ans,tmp,i,len;
int a[MAXC+],Next[MAXL],extend1[MAXL],extend2[MAXL],sum[MAXL];
char s1[MAXL],s2[MAXL]; template <typename T> inline void read(T &x) {
int f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) { if (c == '-') f = -f; }
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
template <typename T> inline void write(T x) {
if (x < ) { putchar('-'); x = -x; }
if (x > ) write(x/);
putchar(x%+'');
}
template <typename T> inline void writeln(T x) {
write(x);
puts("");
}
inline void exkmp(char *s1,char *s2,int *Next,int *Extend) {
int i=,j,pos;
while (i + < len && s2[i+] == s2[i]) i++;
Next[] = i;
pos = ;
for (i = ; i < len; i++) {
if (i + Next[i-pos] < pos + Next[pos]) Next[i] = Next[i-pos];
else {
j = pos + Next[i-pos] - i;
if (j < ) j = ;
while (i + j < len && s2[j] == s2[i+j]) j++;
Next[i] = j;
pos = i;
}
}
i = ;
while (i < len && s1[i] == s2[i]) i++;
Extend[] = i;
pos = ;
for (i = ; i < len; i++) {
if (i + Next[i-pos] < pos + Extend[pos]) Extend[i] = Next[i-pos];
else {
j = pos + Extend[pos] - i;
if (j < ) j = ;
while (i + j < len && s1[i+j] == s2[j]) j++;
Extend[i] = j;
pos = i;
}
}
} int main() { read(T);
while (T--) {
for (i = ; i <= MAXC; i++) read(a[i]);
scanf("%s",s1);
len = strlen(s1);
sum[] = a[s1[]-'a'+];
for (i = ; i < len; i++) {
s2[len-i-] = s1[i];
if (i > ) sum[i] = sum[i-] + a[s1[i]-'a'+];
}
exkmp(s2,s1,Next,extend1);
exkmp(s1,s2,Next,extend2);
ans = ;
for (i = ; i < len - ; i++) {
tmp = ;
if (extend1[len-i-] == i + ) tmp += sum[i];
if (extend2[i+] == len - i - ) tmp += sum[len-] - sum[i];
ans = max(ans,tmp);
}
writeln(ans);
} return ; }

【HDU 3613】Best Reward的更多相关文章

  1. 【数位dp】【HDU 3555】【HDU 2089】数位DP入门题

    [HDU  3555]原题直通车: 代码: // 31MS 900K 909 B G++ #include<iostream> #include<cstdio> #includ ...

  2. 【HDU 5647】DZY Loves Connecting(树DP)

    pid=5647">[HDU 5647]DZY Loves Connecting(树DP) DZY Loves Connecting Time Limit: 4000/2000 MS ...

  3. -【线性基】【BZOJ 2460】【BZOJ 2115】【HDU 3949】

    [把三道我做过的线性基题目放在一起总结一下,代码都挺简单,主要就是贪心思想和异或的高斯消元] [然后把网上的讲解归纳一下] 1.线性基: 若干数的线性基是一组数a1,a2,a3...an,其中ax的最 ...

  4. 【HDU 2196】 Computer(树的直径)

    [HDU 2196] Computer(树的直径) 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 这题可以用树形DP解决,自然也可以用最直观的方法解 ...

  5. 【HDU 2196】 Computer (树形DP)

    [HDU 2196] Computer 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 刘汝佳<算法竞赛入门经典>P282页留下了这个问题 ...

  6. 【HDU 5145】 NPY and girls(组合+莫队)

    pid=5145">[HDU 5145] NPY and girls(组合+莫队) NPY and girls Time Limit: 8000/4000 MS (Java/Other ...

  7. 【hdu 1043】Eight

    [题目链接]:http://acm.hdu.edu.cn/showproblem.php?pid=1043 [题意] 会给你很多组数据; 让你输出这组数据到目标状态的具体步骤; [题解] 从12345 ...

  8. 【HDU 3068】 最长回文

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=3068 [算法] Manacher算法求最长回文子串 [代码] #include<bits/s ...

  9. 【HDU 4699】 Editor

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=4699 [算法] 维护两个栈,一个栈放光标之前的数,另外一个放光标之后的数 在维护栈的同时求最大前缀 ...

随机推荐

  1. Codeforces 833B The Bakery(主席树 + 决策单调性优化DP)

    题目链接 The Bakery 题目大意:目标是把$n$个数分成$k$组,每个组的值为这个组内不同的数的个数,求$k$个组的值的和的最大值. 题目分析: 这道题我的解法可能和大众解法不太一样……我用主 ...

  2. BZOJ3786 星际探索

    @(BZOJ)[DFS序, Splay] Description 物理学家小C的研究正遇到某个瓶颈. 他正在研究的是一个星系,这个星系中有n个星球,其中有一个主星球(方便起见我们默认其为1号星球),其 ...

  3. Windows下使用Nexus搭建Maven私服(使用)

    注意: 1.从3.0版本的Nexus开始,已经不再缓存https://repo1.maven.org/maven2/的包,所以当安装好之后,在界面上不会有任何的包可以搜索到,但是功能是一切正常的,只有 ...

  4. 【kotlin】报错:required:LIst<XXX> found:List<Unit>此类型的问题

    出现问题如下: 解决方式如下: 解决思路:上面报出来的错误很明显,就是说想要的是List<XXX>类型但是给的却是List<Unit>类型,给的不是它想要的嘛 关键就是解决问题 ...

  5. 正則表達式--js使用案例

    前言:在前端页面使用中.遇到日期格式的验证.開始使用了一款表单控件验证.可是不兼容!!并且使用起来还受到非常大约束.所以就决定自己写原生js. 为了完毕日期格式的验证.第一步,当然是学会使用正則表達式 ...

  6. Answer&#39;s Question about pointer

    When you create a new pointer, this will be in heap until you delete it.  So what you said is sort o ...

  7. Yii 清理缓存

    html: <button onclick="clearCache()">ClearCache</button> js: function clearCac ...

  8. ActiveMQ(一) 转

    package pfs.y2017.m11.mq.activemq.demo01; import javax.jms.Connection; import javax.jms.DeliveryMode ...

  9. vim note (1)

    'vim' go into the vim mode 'i' 'a' 's'    is means insert mode 'v' is means visual mode 'esc' is mea ...

  10. innodb 乐观插入因空间不够导致失败,进入悲观插入阶段,这个空间的大小限制

    btr_cur_optimistic_insert{ ... /*检查分裂页时是否有足够的空间预留给未来记录的update*/ if (leaf && !zip_size && ...