摘要: 1 /* 2 主席树:对于序列的每一个前缀建一棵以序列里的值为下标的线段树(所以要先离散化), 3 记录该前缀序列里出现的值的次数; 4 记离散后的标记为1~n; (下面值直接用1~n代替;) 5 对于区间[x,y]的第k大的值,那么从root[x-1],root[y]开始, 6 t=root[y].[1,mid]-root[x-1].[1,mid] ,t表示区间[x,y]内值在[1,mid]的个数 7 先判断t是否大于K,如果t大于k,那么说明在区间[x,y]内存在[1,mid]的数的个数大于k, 8 也就是第k大的值在[1,mid]中,否则在[mid+1,r]中; 9 10 这样我们... 阅读全文
posted @ 2013-05-23 12:32 Rabbit_hair 阅读(5150) 评论(0) 推荐(3)