WA 了 4 个 点
#include <bits/stdc++.h>
using namespace std;
#define int long long
unsigned long long dp[301010][4];
char tp[301010][4];
signed main(){
for(int i = 1; i <= 300100; ++i) for(int j = 0; j < 4; ++j) dp[i][j] = 4e18, tp[i][j] = '~';
int x, y, z;
scanf("%lld%lld%lld", &x, &y, &z);
char s[305001];
scanf("%s", s);
int len = strlen(s);
tp[0][0] = tp[0][1] = tp[0][2] = 'a';
for(int i = 0; i < len; ++i){
if(s[i] == tp[i][0]){
tp[i+1][0] = s[i];
dp[i+1][0] = min(dp[i][0] + x, dp[i+1][0]);
}else if(tp[i][0] == 'A' || tp[i][0] == 'a'){
tp[i+1][1] = tp[i][0];
dp[i+1][1] = min(dp[i][0] + y, dp[i+1][1]);
tp[i+1][2] = s[i];
dp[i+1][2] = min(dp[i][0] + x + z, dp[i+1][2]);
}
if(s[i] == tp[i][1]){
tp[i+1][0] = s[i];
dp[i+1][0] = min(dp[i][1] + x, dp[i+1][0]);
}else if(tp[i][1] == 'A' || tp[i][1] == 'a'){
tp[i+1][1] = tp[i][1];
dp[i+1][1] = min(dp[i][1] + y, dp[i+1][1]);
tp[i+1][2] = s[i];
dp[i+1][2] = min(dp[i][1] + x + z, dp[i+1][2]);
}
if(s[i] == tp[i][2]){
tp[i+1][0] = s[i];
dp[i+1][0] = min(dp[i][2] + x, dp[i+1][0]);
}else if(tp[i][2] == 'A' || tp[i][2] == 'a'){
tp[i+1][1] = tp[i][2];
dp[i+1][1] = min(dp[i][2] + y, dp[i+1][1]);
tp[i+1][2] = s[i];
dp[i+1][2] = min(dp[i][2] + x + z, dp[i+1][2]);
}
}
printf("%llu\n", min({dp[len][0], dp[len][1], dp[len][2]}));
return 0;
}