给定n条购物清单,每条信息为ai,bi,表示需要购买一种类型为ai、价格为bi的食材。若两种食材满足∣ai−aj∣≤k,则可以相互替换。即对于需要ai的食材,可以选择购买aj来替换(前提是∣ai−aj∣≤k)。问:购买所有物品至少需要花费多少钱?
题目的核心在于先预处理所有食材类型的最低价格,再利用线段树对每个需求对应的区间[ai−k,ai+k]内进行快速区间最小值查询,从而在O(nlogM)的时间复杂度内求出每个需求的最小购买价格并累加得到总花费。
小红正在准备烹饪需要的食材,购物清单上一共列举了n条需要购买的食材信息。
每条信息为ai,bi。表示需要购买一个类型为ai,价格为bi的食材。
两种物品若满足∣ai−aj∣≤k,那对于ai可以选择购买aj替换,同理aj也可以购买ai来替换。
现在小红想知道准备完购物清单上的物品至少需要花费多少钱?
第一行两个整数n,k(1≤n≤105,1≤k≤106),表示食材种类和转换系数,
第二行n个整数,表示a数组,其中ai(1≤ai≤106)
第二行n个整数,表示b数组,其中bi(1≤bi≤106)
一个整数,表示准备完所有食材至少需要花费钱数
输入
3 6
1 2 8
1 1 2
输出
3
输入
3 6
2 2 8
1 3 2
输出
3