前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【kAri OJ605】陈队的树

【kAri OJ605】陈队的树

作者头像
饶文津
发布2020-06-02 15:22:21
2430
发布2020-06-02 15:22:21
举报
文章被收录于专栏:饶文津的专栏

时间限制 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棵树被修剪完之后的高度和的最小值。

输入样例

代码语言:javascript
复制
1
2 2
4 7
3 4

输出样例

代码语言:javascript
复制
7

分析

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

代码

代码语言:javascript
复制
#include<cstdio>
#include<algorithm>
using namespace std;
int t,n,m,a[2005];
int main(){
    scanf("%d",&t);
    while(t--){
        scanf("%d%d",&n,&m);
        for(int i=0;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=1;i<n;i++)
            a[0]+=a[i];
        printf("%d\n",a[0]);
    }
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-03-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • 输入格式
  • 输出格式
  • 输入样例
  • 输出样例
  • 分析
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档