吐槽一下这题题意真是看了半天,,作者英文水平你妈嗨你妈嗨
题意最后是:一棵n个节点的树。wc爱跑步,跑n天,第i天从第i个节点开始跑步,每次跑到距第i个节点最远的那个节点(产生了n个距离),现在要在这n个距离里取连续的若干天,使得这些天里最大距离和最小距离的差小于M,问怎么取使得天数最多?
发现这题和Hdu 2196 Computer有相同的部分,先求一下树上每个点到其它点的最远距离,存在一个一维数组里。问题就转化为:怎么确定一个最大的符合要求的区间。即区间里 最大值 - 最小值 < M。
用很基础的线段树可以很容易的查询一个区间的最大最小值。再维护两个指针i,j;我一开始想的是i=1,j=n;然后i、j向中间靠,一旦找一个符合的就是最大的,但是发现反而不知道怎么判断移动i,j。
最后看了题解,直接让i=j=1;一起往右移就是了。
总的来说这题不难,没什么新意
【代码】
/* ***********************************************
Author :angon
************************************************ */
#include
#include
#include
#include
#include
#include
#include
#include
#include