最小消耗
思路:
1.先分情况讨论,怪物无非0和1,根据题意推出式子:
当怪物是0时:ans = min(a,c + b);//要么直接用a魔法消灭,要么转化后再消灭
当怪物是1时:ans = min(b,c + a);//同上
#include<iostream>
#include<cstring>
#include<algorithm>
#define ll long long
#define INF 0x3f3f3f3f
using namespace std;
ll t,n,a,b,c,ans;//0:a,1:b,change:c
string s;
int main()
{
ios::sync_with_stdio(false);
cin >> t;
while(t--)
{
cin >> n >> a >> b >> c;
cin >> s;
ans = 0;
for(int i = 0;i < n;++i)
{
if(s[i] == '0')
{
ans += min(a,c + b);
}
else
{
ans += min(b,c + a);
}
}
cout << ans << endl;
}
return 0;
}