求调
查看原帖
求调
905885
Him_shu楼主2024/10/23 21:16
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define N 200005
#define inf 1e14
#define mod 998244353
struct info{
	int a,b;
}a[N];
int t,k,n,ans,sum;
int cmp(info x,info y){
	return x.a<y.a;
}
set<int>s;
signed main(){
	cin>>t;
	while(t--){
		sum=0;
		ans=inf;
		cin>>n>>k;
		for(int i=1;i<=n;i++){
			cin>>a[i].a;
		}
		for(int i=1;i<=n;i++){
			cin>>a[i].b;
		}
		sort(a+1,a+n+1,cmp);
		for(int i=1;i<k;i++){
			s.insert(a[i].b);
			sum+=a[i].b;
		}
		for(int i=k;i<=n;i++){
			ans=min(ans,(sum+a[i].b)*a[i].a);
			int back=*s.rbegin();
			if(a[i].b<back){
				s.erase(back);
				s.insert(a[i].b);
				sum-=back;
				sum+=a[i].b;
			}
		}
		cout<<ans<<"\n";
	}
    return 0;
}
2024/10/23 21:16
加载中...