70pts,WA on #1#3#8望各位大佬指教
#include <bits/stdc++.h>
using namespace std;
const int N = 2e6 + 10;
int t, n, a[N], c[N];
long long dp[N];
int main(){
scanf("%d", &t);
while (t--){
scanf("%d", &n);
for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);
for (int i = 1; i <= n; ++i) scanf("%d", &c[i]);
long long min0 = 0x3f3f3f3f, min1 = 0x3f3f3f3f;
memset(dp, 0, sizeof(dp));
for (int i = 0; i <= n; ++i){
if (i) dp[i] = (c[i] ? min1 : min0) + a[i];
if (!c[i + 1]) min0 = min(min0, dp[i] + a[i + 1]);
else min1 = min(min1, dp[i] +a[i + 1]);
}
printf("%lld\n", dp[n]);
}
return 0;
}