fzu 2197
来源:互联网 发布:火炬之光2 mac 编辑:程序博客网 时间:2024/06/05 23:53
比赛的时候居然没看出来是贪心..
就是让最前面的0和最后面的1交换
#include<stdio.h>#include<algorithm>#include<string.h>#define inf 10000000;using namespace std;char ss[100001];int pos[100001];int main(){ int t; scanf("%d",&t); while(t--) { int x,y; scanf("%d%d",&x,&y); scanf("%s",ss); int b=strlen(ss); int zz=0; for(int i=0; i<b; i++) { if(ss[i]=='1') pos[zz++]=i; } zz--; int sum=0; for(int i=0; i<b; i++) { if(ss[i]=='0') { if(pos[zz]<i) { break; } //printf("%d..\n",pos[zz]); sum+=min(y,x*(pos[zz--]-i)); } } printf("%d\n",sum); }}
0 0