題目:
鏈接: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<