链接:
#include <stdio.h>
int main()
{
puts("转载请注明出处[vmurder]谢谢");
puts("网址:blog.csdn.net/vmurder/article/details/44627469");
}
题解:
首先表示这个代码是线性的,是怎么构造数据也卡不住的!
而网上普遍流行的那个二分的是基于直径长度 d 的
算法:
首先答案路径一定在某直径上[证明1,见文末],然后我们求出这个直径序列(任一直径即可[证明2,见文末]),
处理出一些数组:
fi 表示i是路径左端点时直径上左边的删掉的那段的长度,
g