超式解题法
2025-09-10 19:49:32
发布于:广东
0阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int n,q;
long long timex[200005];
long long timey[200005];
long long pre[200005];
queue <int > time2;
int k;
int main(){
cin>>n>>q;
for(int i = 1 ; i <= n ; i ++) cin>>timex[i];
for(int i = 1 ; i <= n ; i ++) cin>>timey[i];
for(int i = 1 ; i <= n ; i ++) pre[i] = pre[i-1] + timex[i];
while(q--){
cin>>k;
priority_queue <int > time1;
long long t = 0;
for(int i = 1 ; i <= k ; i ++) time1.push(timey[i]),t += timey[i];
long long ans = pre[k]+t;
for(int i = k+1 ; i <= n ; i ++){
if(time1.top() > timey[i]){
t = t - time1.top() + timey[i];
time1.pop();
time1.push(timey[i]);
}
ans = min(ans , t+pre[i]);
}
cout<<ans<<"\n";
}
return 0;
}
这里空空如也
有帮助,赞一个