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;}
}