#include <stdio.h>
int main()
{
puts("转载请注明出处[vmurder]谢谢");
puts("网址:blog.csdn.net/vmurder/article/details/45146301");
}
暴力是什么样呢?
然后能过的算法是什么样呢?
首先对于一棵子树,如果根节点到整棵树的根节点这一部分节点的【挂机/送人头】的状态已经确定了,那么左子树的最优答案和右子树的最优答案就都是独立的,所以我们在这个时候就可以对左子树和右子树分别进行搜索。
然后
然后对于一个平民(就是一个叶子),因为是搜索,它的各级祖先的状态都确定,所以扫一遍
然后这样的话扫到一个第
也就是说一个第i层的点需要的时间复杂度是
而第i层有
然后有n层,最终时间复杂度
然后再算上每个平民扫
最终时间复杂度
哎如果我算错了也没有关系嘛,反正我现场AC了。时间复杂度基本就是这么算的,差了也差不了多少。
程序还没发下来,以后再贴
【BZOJ3***】【JLOI2015】战争调度 war 搜索
原文地址:http://blog.csdn.net/vmurder/article/details/45146301