#include<bits/stdc++.h>
using namespace std;
const int maxn = 2005;
int dp[maxn][maxn];
int cost[100];
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(dp,0,sizeof(dp));
char a[maxn];
scanf("%s",a+1);
getchar();
char x;
int x1,x2;
for(int i = 1 ; i<=n; i++)
{
scanf("%c",&x);
scanf("%d%d",&x1,&x2);
cost[x-'a'] = min(x1,x2);
}
for(int j = 1; j<= m; j++)
{
for(int i = j-1; i>=1; i--)
{
dp[i][j] = min(dp[i][j-1]+cost[a[j]-'a'],dp[i+1][j]+cost[a[i]-'a']);
if(a[i]==a[j])
{
dp[i][j] =dp[i+1][j-1];
}
}
}
// for(int i = 1 ; i<=m; i++)
// {
// for(int j = 1; j<=m; j++)
// {
// printf("%d ",dp[i][j]);
// }
// printf("\n");
//
// }
printf("%d\n",dp[1][m]);
}
return 0 ;
}
nyoj 还是回文
最新推荐文章于 2021-05-22 00:14:52 发布