此题一看就知道是树链剖分,模板题!可怜我模板少抄个字母,在这两百多行的代码里找bug找了三个多小时啊!!!!
解题思路:对于要求的x,y点,先可以求得不加任何操作的最大流量P,c1为建造一个路的话费,c2为增加一个容量的花费,如果c1<=c2,那么结果就为P+k/c1。
否则,如果先建一条路,那么最大的流量是M=P+1+(k-c1)/c2,如果不新建路只加边呢?那就可以二分求得最大的结果,为了节省时间,可以对整体进行最小值为M的二分结果。
下面是我的代码,不是很简单,但是各个函数还算清晰了。。。。
#pragma comment(linker,"/STACK:124000000,124000000")
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include