@[Mount_](/user/519384)
```cpp
#include<bits/stdc++.h>
#define int long long
using namespace std;
char s[2005];
int n,m,a[1005],b[1005],dp[2005][2005];
signed main()
{
cin >> n >> m >> (s+1);
for(int i=1; i<=n; i++)
{
char c;
cin >> c;
cin >> a[c] >> b[c];
}
for(int len=2; len<=m; len++)
{
for(int l=1; l+len-1<=m; l++)
{
int tmp1,tmp2,x=l,y=l+len-1;
tmp1=min(a[s[x]],b[s[x]]);
tmp2=min(a[s[y]],b[s[y]]);
if (s[x]==s[y])
{
dp[x][y]=dp[x+1][y-1];
dp[x][y]=min(dp[x][y],dp[x+1][y]+tmp1);
dp[x][y]=min(dp[x][y],dp[x][y-1]+tmp2);
}
else
dp[x][y]=min(dp[x+1][y]+tmp1,dp[x][y-1]+tmp2);
}
}
cout << dp[1][m];
return 0;
}
```
~~给个关注?~~
by kdy20100729 @ 2022-03-06 15:55:59
@[kdy20100729](/user/367194) 好早以前就A找出错了,是循环反了。但是关注必须给的hh
by Link_Cut_Y @ 2022-03-06 19:45:44
@[kdy20100729](/user/367194)
[dalao求调](https://www.luogu.com.cn/discuss/415590)
by Link_Cut_Y @ 2022-03-06 19:47:31