题意:
思路:
Code:
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int mxn=1e5+10;
string s;
int N,p,k,x,y;
int dp[mxn];
void solve(){
s.clear();
cin>>N>>p>>k;
cin>>s;
s=" "+s;
cin>>x>>y;
for(int i=N;i>=1;i--){
if(i+k>N){
if(s[i]=='1') dp[i]=0;
else dp[i]=x;
}else{
if(s[i]=='1') dp[i]=dp[i+k];
else dp[i]=dp[i+k]+x;
}
}
int ans=2e18;
for(int i=1;i<=N+1-p;i++){
ans=min(ans,dp[i+p-1]+(i-1ll)*y);
}
cout<<ans<<'\n';
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int __=1;cin>>__;
while(__--)solve();return 0;
}