913. Query on a tree II - #include <Seter> - using namespace Orz;

913. Query on a tree II

Seter posted @ 2011年8月04日 18:55 in SPOJ with tags Classical LCA , 1683 阅读

https://www.spoj.pl/problems/QTREE2/

ID DATE USER PROBLEM RESULT TIME MEM LANG
5468277 2011-08-04 12:33:38 Seter Query on a tree II accepted
edit  run
0.35 3.3M

C

用块状树水过QTREE以后就开始颓废于电影...今天花了一个小时终于A掉了QTREE2...

写的时候非常纠结...主要是结构体定义的变量多了一个老搞混...额

然后没有1Y就是个悲剧啊。st指针忘记初始化了!!!导致栈溢出!!!万一是比赛就OVER了!!!


方法是离线TARJAN求LCA。对于DIST直接输出dis[i]+dis[j]-2dis[lca[i,j]]。对于KTH则维护每个点向上1,2,4,8...个点,然后logn向上跳Orz...

TIP1:此题没有给出操作个数...我写的代码开了10000A了...可见操作数不是很多...N+Q还是挺合算的...

TIP2:logn向上跳这东西我用了个很久以前看到的二进制加速,即MultiplyDeBruijnBitPosition这个。具体可以看看M67大牛blog!

http://www.matrix67.com/blog/archives/3985

PS:谁来告诉我排名顶上那个0.15S的秒杀代码怎么写的...看MEM似乎是在线的啊。。在线的应该没离线的快啊...郁闷!

By Seter

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter
Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee