4487. Can you answer these queries VI - #include <Seter> - using namespace Orz;

4487. Can you answer these queries VI

Seter posted @ 2011年11月23日 20:58 in SPOJ with tags BalancedTree Classical Splay , 2992 阅读

http://www.spoj.pl/problems/GSS6/

ID DATE USER PROBLEM RESULT TIME MEM LANG
6073829 2011-11-23 13:25:38 Seter Can you answer these queries VI accepted
edit  run
8.28 12M

C

1A有木有!超开心……

某日看到fotile主席用4种方法在虐这题,深深被震撼,再次Orz!最神的一种方法是主席自己create的SBT进化版——主席树!主席说主席树可以秒杀一切神题!!!Orz!!!

这个是我A掉的第一个有一堆卫星数据的Splay题……留个念吧……

我对这种题木的唯一感觉就是Splay……空节点的特判我用null.l=null.r=-100000trick掉了,但是没敢插入头尾节点……所以在移动到第一个数前/最后一个数后的时候进行特判了囧……

Q的时候切掉1..i-1,j+1..s,update后输出整棵树的max就可以了……最后再将1..i-1接到最左边,j+1..s接到最右边……虽然这样有点慢但是我想不出更好的方法了T^T

彻底变傻X……可以splay第j个数,如果i=j则就是根的值,否则在左子树中splay第i个数,然后切掉它的左子树和根的右子树,update后再直接接回去……不过这样还是没tbl神犇快……改成C++就快了一点……不开O2其实还是C++快啊……

对一个节点(线段)记录lmax,rmax,max,sum。这四个用节点上的数推一下就可以了,很简单的……

注意改好后对修改的节点update啊……

另外没什么好说的……代码超长……70行TAT

 

 

By Seter
jiangzoi 说:
2011年12月02日 17:07

敢问fotile主席……鄙人弱菜神犇勿喷。


登录 *


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