【kAri OJ605】陈队的树

时间限制 1000 ms 内存限制 65536 KB

题目描述

陈队有N棵树,有一天他突然想修剪一下这N棵树,他有M个修剪器,对于每个修剪器给出一个高度h,表示这个修剪器可以把某一棵高度超过h的树修剪为h高度。但是有一个限制条件,每棵树最多只能被修改一次,每个修剪器最多也只能使用一次。现在问题来了,陈队想问下修剪完之后N棵树的高度之和最小为多少。

输入格式

第一行为数据组数T(1≤T≤50)。

每组数据第一行为N(1≤N≤1000),M(1≤M≤1000)。

下面一行为N个数,每个数大小在1到1000之间。

下面一行为M个数,每个数大小在1到1000之间。

输出格式

输出N棵树被修剪完之后的高度和的最小值。

输入样例

1
2 2
4 7
3 4

输出样例

7

分析

相当于把比较大的数字换成比较小的,最后就是所有数字里最小的n个数之和。

代码

#include<cstdio>
#include<algorithm>
using namespace std;
int t,n,m,a[];
int main(){
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
for(int i=;i<n;i++)
scanf("%d",&a[i]);
for(int i=n;i<n+m;i++)
scanf("%d",&a[i]);
sort(a,a+n+m);
for(int i=;i<n;i++)
a[]+=a[i];
printf("%d\n",a[]);
}
return ;
}

  

上一篇:应用内支付(IAP)可加入三方支付


下一篇:网络编程之PC版与Android手机版带断点续传的多线程下载