70pts求调
查看原帖
70pts求调
1427364
vk3601h楼主2025/1/18 23:19

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;
}
2025/1/18 23:19
加载中...