主席树又名可持久化线段树,就是动态开点建立保存了历史版本的线段树,每次可以回溯不同版本的一种数据结构
考虑二分,我们把美味度大于mid的果汁按照价格从高到低选择即可解决,但如果每次都选择就会使得复杂度很高。考虑利用线段树上二分的特点,我们把大于mid的果汁建立在线段树上,以价格作为下标,然后就可以在线段树上二分找到装满L升的最小花费了。再利用可持久化线段树来避免重复建树的浪费,把果汁先按照美味度排序,然后倒着插入到线段树中,每次新建一个版本,用于以后的查询即可,剩下就是二分了。 代码
主席树又名可持久化线段树,就是动态开点建立保存了历史版本的线段树,每次可以回溯不同版本的一种数据结构
考虑二分,我们把美味度大于mid的果汁按照价格从高到低选择即可解决,但如果每次都选择就会使得复杂度很高。考虑利用线段树上二分的特点,我们把大于mid的果汁建立在线段树上,以价格作为下标,然后就可以在线段树上二分找到装满L升的最小花费了。再利用可持久化线段树来避免重复建树的浪费,把果汁先按照美味度排序,然后倒着插入到线段树中,每次新建一个版本,用于以后的查询即可,剩下就是二分了。 代码