这道题要衡量换与不换之间的代价,所以不能盲目的将大的换成小的。
#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; }