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