A. Strange Birthday Party:题目
题意:有n个朋友,要么给他钱,要么给他买礼物,礼物每样只能买一个
思路:sort,给钱不如给礼物的给礼物,礼物给完了,或者礼物本身太贵不如给钱就给钱。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<int> a((int)4e5);
vector<int> b((int)4e5);
int main()
{
int t;
cin >> t;
while (t--)
{
int n, m;
cin >> n >> m;
for (int i = 0; i < n; i++)
cin >> a[i];
for (int i = 0; i < m; i++)
cin >> b[i];
for (int i=0;i<n;i++)
{
a[i] = b[a[i]-1];
}
sort(a.begin(),a.begin()+n);
sort(b.begin(),b.begin()+m);
int k = 0;
for (int i=n-1;i>=0;i--)
{
a[i] = min(a[i],b[k]);
k++;
if (k==m) break;
}
ll res = 0;
for (int i=0;i<n;i++)
{
res+=a[i];
}
cout<<res<<endl;
}
}