摘要:
ZOJ_2112 当自己学了splay之后,这个题目的基本思想就可以理解了,但代码还是写得相当挫,在后面的学习过程中再不断完善吧。 首先线段树可以完成对区间的限制,而平衡树则可以完成统计区间上不大于x的数,这样我们就可以在线段树的节点上放一棵平衡树,平衡树上有这个区间上所有的数。修改操作比较好完成,只要查找这个数在哪些区间中,并在对应的平衡树中更新相应的值即可。至于查询操作,我们可以先二分答案x,将问题转化成x是否可以作为第k大的数,然后只要统计区间中不大于x的数的数量n2,以及不大于x-1的数的数量n1,如果满足n1<k<=n2,那么自然x就是解了。 由于线段树有logn层,每层 阅读全文
摘要:
POJ_3468 (2) 第三次写这个题了,不过这次写的挺痛苦的,也是为了练基本的splay对区间的操作,不过写得比较挫…… 不过通过这次写splay的代码,感觉论文上rotate操作里面的push_down下传标记的操作是没有用的,因为调用rotate_to找对应节点的时候已经把标记都下传好了,而rotate操作也只是对rotate_to走过的路径上节点进行操作,因此该下传的就早已在调用rotate_to的时候下传完毕了。#include<stdio.h>#include<string.h>#define MAXD 100010int N, Q, T, node, l 阅读全文