P9344 去年天气旧亭台 题解
贪心
显然的,当
当
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 2e6 + 5, M = 1e10 + 5;
int t, n, a[N], c[N];
signed main() {
cin>>t;
while(t--) {
int n;
cin>>n;
for(int i = 1; i <= n; i++) cin>>a[i];
for(int i = 1; i <= n; i++) cin>>c[i];
if(c[1] == c[n]) cout<<a[1] + a[n]<<endl;
else {
int ans = M;
for(int k = 1; k < n; k++)
if(c[1] == c[k] && c[k + 1] == c[n])
ans = min(ans, a[1] + a[k] + a[k + 1] + a[n]);
cout<<ans<<endl;
}
}
return 0;
}