这道题要衡量换与不换之间的代价,所以不能盲目的将大的换成小的。
#include<stdio.h>
#include<string.h>
int main()
{
int t,a,b;
int x,y;
int n,c1,c0,h;
char ch[1010];
scanf("%d",&t);
for(int i=0;i<t;i++){
scanf("%d %d %d %d",&n,&c0,&c1,&h);
x=0,y=0;
getchar();
gets(ch);
a=c1-c0;
if(a<0){
a=a*(-1);
}
for(int j=0;j<n;j++){
if(ch[j]=='0')
x++;
else if(ch[j]=='1')
y++;
}
if(a>h){
if(c0>c1)
printf("%d\n",n*c1+x*h);
else
printf("%d\n",n*c0+y*h);
}
else{
printf("%d\n",y*c1+x*c0);
}
}
return 0;
}


京公网安备 11010502036488号