求调
查看原帖
求调
1109707
godmoo楼主2023/12/29 14:03
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+5;
int t,n,h,a,b,ans,data[N],chk[N];
void init(){
	h=1,ans=0;
	memset(chk,0,sizeof chk);
}
signed main(){
	scanf("%lld",&t);
	while(t--){
		init();
		scanf("%lld%lld%lld",&n,&a,&b);
		for(int i=1,lst=0;i<=n;i++){
			scanf("%1lld",data+i);
			if(!data[i]){
				if(!lst) lst=i;
				chk[lst]++;
			}
			else lst=0;
		}
		ans+=b;
		for(int i=1;i<=n;i++){
			if(i==n){
				ans+=a*h+b;
				break;
			}
			if(data[i+1]&&h==1) h=2,ans+=a;
			else if((chk[i]-1)*b>2*a&&h==2) h=1,ans+=a;
			ans+=a+h*b;
		}
		printf("%lld\n",ans);
	}
	return 0;	
}

rt
悬赏一关

2023/12/29 14:03
加载中...