BZOJ 3731 Gty的超级妹子树

VictorWonder posted @ 2014年12月21日 10:03 in BZOJ with tags 解题报告 Treap 树套树 树上查询 块状树 , 2400 阅读
明天就要月考了,总感觉现在这个时候还在做题不太好……呃,不过既然都已经开始做这题了,如果不AC了它的话,估计我也没有心情去月考了(好吧,我承认这一段是在胡扯233)
 
下面是正题:
这道题目的做法是块状树套上平衡树,我打的是Treap,感觉还是Treap好打一些,而且为了速度,我作死地打了指针+结构体,调试的时候真的是欲仙欲死。
首先,我们需要将整棵树分成好几个部分,至于怎么分块我就不说了,毕竟网上都应该能够搜到。分块之后,我们就将整棵树(我们定义其为1号树)变成了一棵很小的树,每一个结点都是一个块,我们定义这棵树为2号树。
0.查询
    查询的是一棵子树,首先,我们找到查询的结点u,接着,对u所属的那个块中的属于u子树的结点都查询一遍,判断其权值是不是严格大于x。其次,在2号树对1号树中u的子节点所属的块进行查询,因为每一个块都套上了Treap,查询的话还是挺方便的。具体的可以参照下图:
1.修改
    把点u的权值改成x,其实等于是在u所属块套上的Treap中,将u这个结点删去,改掉权值之后再将u插入回去,这里有一个坑点,我的Treap是根据每一块的根来算的,也就是说,有a1,a2..ak个结点都位于Treap[a1]中,那么将a1从Treap[a1]中删去之后再插入进去,最后得到的是一棵只有一个结点的Treap。
2.插入
    插入一个新结点要分类讨论,如果这个结点的父亲节点所属的块的大小还没有饱和,那么新插入的结点也属于这个块,否则,新插入的结点就是一个新的块,不要忘记将新的块所构成的新结点插入到2号树中。
3.删除
    删除操作也是一个麻烦事,我们假设u属于块pos[u]。如果pos[u]==u那么就在2号树中将这个结点和它的父亲结点断开就行了,否则,我们需要将u的所有子节点中属于pos[u]的点都从Treap[pos[u]]中删去然后再插入到新的Treap[pos[u]=u]中。其次,在2号树中,对于那些u子树所构成的块结点,需要将其和pos[u]断开连接,再重新和pos[u]=u连接。
 
大致就是这个样子,本来这个程序昨天中午就打好了的,调了大概一两个小时,直到后来,极限数据出错概率也只有5%~10%了,那才是最痛苦的时候,小数据大概对拍了半个多小时才拍出了一组数据将我的程序卡掉,结果扔到BZOJ上还是超时了,也不知道在哪里出了问题,直到不久前才发现,原来是对于块的size定义出了问题,为了调试方便,我把每块的大小都定义为了4 TAT。改成了400后就AC了,时间是五秒多,后来一直扩大这个数值,直到每块的size都在6000左右的时候,速度被我提到了1.75秒,感觉再进步就比较麻烦了。
另外,感觉这道题目的这种做法还是有点问题的,我发现如果是菊花图的话,似乎可以卡掉分块做法……不过我也懒得管这么多了,还是乖乖滚去复习月考吧……
 
Updata:BZOJ 3720 Gty的妹子树 和这道题目同一个出题人,操作比这题少了一个(断裂操作),其他都一样,所以你们都懂得。
 
Grade 8 Result Comil 说:
2022年8月31日 15:54

Comilla board is another education board working under Secondary and Higher Secondary Education, Bangladesh, and the education board is also successfully completed the Grade 8 terminal examinations at all selected examination test centers at Comilla division, and the Junior School Certificate and Junior Dakhil Certificate terminal examination is a second largest examination in the country. Grade 8 Result Comilla The Comilla Board is also completed those subject wise exams between 1st to 3rd week of November as per schedule announced by School Education department, and there are a huge number of students are participated like as all other educational boards from all districts of the division, right now they are waiting to check JSC & JDC Result 2022 Comilla Board with subject wise marks and total marksheet with final CGPA grade of the student.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter