题目:
链接:Best Reward
题意:
题目的实质就是,给你字符数组v,字符串s,字符串由a....z组成,v[0]是a的价值,依次类推,,(一定要分的)把s分成两个字符串,若是回文其价值是相应的v[i]的和,不是回文,价值为0。求出最大价值。
算法:
EKMP算法。EMP算法详解:点击打开链接
思路:
。。。。。。。。。。。
代码:
#include#include #include using namespace std; char s1[500010],s2[500010]; int sum[500010],next[500010]; int v[30]; int extend1[500010],extend2[500010]; void EKMP(char s[],char t[],int next[],int extend[])//求extend数组的模板 { int i,j,p,l; int len=strlen(t); int len1=strlen(s); memset(next,0,sizeof(next)); memset(extend,0,sizeof(extend)); next[0]=len; j=0; while(1+j >t; while(t--) { for(int i=0; i<26; i++) cin>>v[i]; getchar(); gets(s1); int len = strlen(s1); sum[0] = 0; for(int i=0; i >30; for(int i=1; i ans) ans = temp; } cout<