vfk的官方题解提供了一种单调队列合并的做法(解法5-2),但给的复杂度式子是O(n+qlogn),也就是说预处理时间是O(n)。我不太理解。 然后我想了一种构造方法:对于n个点的树,根的左儿子是一条长为n/2-1的链,右儿子则递归处理。然后每个点的w值赋成其深度。 这样,根据xllend3大爷的代码,每次合并至少是O(轻儿子的单调队列长度之和)。 所以,对于这种树,我们有f(n)=f(n/2)+n/2=f(n/2)+O(n),所以f(n)=O(nlogn) 那么,为什么预处理时间是O(n),我错在哪里?
关于第284题快乐游戏鸡的疑惑
2017-05-17 22:41:30 By zx2003
评论
cnyali_lk
f(n)=f(n/2)+n/2=f(n/4)+n/2+n/4=....=n/2+n/4+n/8+.....=n
f(n)=O(n)
(听听就好)
- 2017-05-17 22:46:19
发表评论
可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。