题意 :
一群奶牛抓起一辆卡车,冒险进入丛林深处的探险队。作为相当差的司机,不幸的是,奶牛设法跑过一块岩石并刺破卡车的油箱。卡车现在每运行一个单位的距离泄漏一个燃料单位。
为了修理卡车,奶牛需要沿着一条蜿蜒的长路行驶到最近的城镇(距离不超过1,000,000个单位)。在这条路上,在城镇和卡车的当前位置之间,有N(1 <= N <= 10,000)燃料站,奶牛可以停下来获得额外的燃料(每站1…100个单位)。
丛林对人类来说是一个危险的地方,对奶牛尤其危险。因此,奶牛希望在前往城镇的路上尽可能少地停下燃料。幸运的是,他们的卡车上的油箱容量非常大,实际上它可以容纳的燃油量没有限制。卡车目前距离城镇L单位,有P单位的燃料(1 <= P <= 1,000,000)。
确定到达城镇所需的最小停留次数,或者奶牛根本无法到达城镇。
思路 : 一 : 优先队列
话说STL确实好用 这题不用优先队列想了好久没想出来
1,默认operator<
priority_queue<int> q;
2,定义一个仿函数 greater<>,对于基本类型可以用这个仿函数声明小顶堆(非降序)
priority_queue<int, vector<int>, greater<int> > q;
3,对于自定义类型,
3.1 自己重载 operator<
priority_queue<Node> q;
bool operator<( Node a, Node b ){
//升序
if( a.x== b.x )