#include<iostream>
#include<string>
#include<algorithm>
#include<cmath>
#include<iomanip>
using namespace std;
const int N=1e5+23;
using ll=long long;
ll fix[N];
ll a[N],b[N];
void slove(){
ll n;cin>>n;
ll ess=0;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++)cin>>b[i];
for(int i=1;i<=n;i++)ess+=(a[i]?1:0)*b[i];
ll mi=0,fixt=0;
for(int i=1;i<=n;i++){
fix[i]=fix[i-1]+(a[i]?-1:1)*b[i];
fixt=max(fixt,fix[i]-mi);
mi=min(mi,fix[i]);
}
cout<<ess+fixt<<'\n';
}
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
ll n;cin>>n;
while(n--){
slove();
}
}
鼠鼠我鸭(前缀和,贪心)
于 2024-01-29 22:49:06 首次发布