题目链接
1-n天每天都需要k个cpu,cpu有m种方案,每种方案给定了可使用的期限、数目和价格。问1-n天的最小的总花费是多少。
容易想到这个东西需要一棵线段树。但是,线段树的节点是价格,它储存两个值,当前状况下,价格区间内的总数目和价格区间内的总花费。
从1到n遍历时间,在每个时刻,线段树中只存在当前可以使用的方案。通过分别对左端点和右端点排序可以在mlogT的时间里完成这个操作。然后对于查询的操作,对于查询数目k的时候,如果左儿子数目大于等于k,就再在左儿子里查询,否则就是左儿子的总代价加上右儿子的查询。总的复杂度是O((n+m)logT),其中T是各方案代价的最大值。
#include
#include
#include
#include
#include