概要:对树链剖分进行收尾和小结,挺进AC自动机(要快,效率要高!)
(一)树链剖分的几个总结:
①【LCA】(bzoj3626)
主要目的就是要优化这道题的时间(思路是从暴力算法入手,然后使用数据结构--树链剖分+线段树去优化)。
·正确处理一个关键问题即可突破此题:区间[l,r]与z点之间的关系。【处理不同性质的问题,有一种入手方式是将其转化为同一性质的问题】可以想到一种集合关系:
-------------ANS[L,R]=ANS[1,R]-ANS[1,L-1]-----------
·最后来跑一跑sort(),这也算是一种常用而高效的优化方式了:改变枚举顺序,以达到贪心目的或正确状态。
②【2015NOIP运输计划】
·简化问题依旧是做数剖的主要思路,可以把这道题放在线性区间上考虑,那么可以【入点加,出点减大法】,在数剖上进行此操作,就记得在尾++,在头--(由于id反向)。当然,“最大的最小”告诉我们用二分。
③【HAOI2015】(bzoj4034)
DFS序,就是这样。树链剖分可以写,但是没有必要。在入和出的时候予以标记,权值分别为正负,程序格式是这样的,十分清晰:
void dfs(int u)
{
dfs_array[++k]=u;in[u]=k;value_array[k]=value[u];
… … … … …
dfs_array[++k]=u;out[u]=k;value_array[k]=-value[u];
}
为了方便回忆,再来一个举例:
题目回忆到此为止。
这是集训第一天,上午课堂很高效,但在下午AC自动机的一道涉及矩阵乘法的题让自己去寻找和理解预备知识“矩阵”就花了很长时间,效率不高(中午睡觉时间有点不够)。这是一个问题:我们对于这种超知识范围的题是否应该深钻?【或许太耗时间而且没有途径系统学习】
这个问题留给张姐来解决。
回首望去常规那边,只剩大米饼了…
张姐还在调AC自动机,(她说:我很累)
LENCE在………………
袁YT在做二分题,
王SY在…………………
不要放弃,大不了再给你一个大米饼。
Don’t give up,anyway we can still get a big-riced pancake!
WSY:LCA这个题哪门做的?