首页 > 试题广场 >

最小代价

[编程题]最小代价
  • 热度指数:657 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给你一个数组,让第个数加一的代价是b_i,你可以求出让数组a,每个数各不相同的最小代价吗?

输入描述:
第一行一个整数,表示数组长度

第二行个整数a_i,表示数组

第三行个整数b_i,表示第个增加1的代价


输出描述:
一个整数表示结果.
示例1

输入

5
1 2 3 4 5
1 1 1 1 1

输出

0

说明

不用任何操作
示例2

输入

3
1 1 2
4 5 3

输出

7

说明

先把第1个数字1加1,此时代价为4,a数组为2 1 2。然后再把第三个数字2加1,此时代价为4+3=7,a数组为2 1 3。
头像 我好困呀呀
发表于 2021-05-24 12:29:03
基本思想就是先排序,然后从相同a中选出b最大的值,保留,其余的值全加到最终代价中,这个过程用了一个priority_queue更新,每次在a值变换时计算。 #include <iostream> #include <vector> #include <queue> 展开全文