hdu2665】的更多相关文章

[POJ2104][HDU2665]K-th Number Description You are working for Macrohard company in data structures department. After failing your previous task about key insertion you were asked to write a new data structure that would be able to return quickly k-th…
hdu2665 题意 求区间第 k 小. 分析 参考 这类题目做法挺多的,例如 划分树. 这里使用主席树再写一发,不得不说主席树相比而言要好写的多,比起普通线段树,主席树就是复用了线段树共有的信息. 可持久化数据结构讲究的就是复用共有的信息,可持久化 Trie 的思想也是差不多的. code #include<bits/stdc++.h> using namespace std; #define lson l, m #define rson m + 1, r const int MAXN =…
划分树 本来是学主席树的,可怜我等巨弱观群巨博客难解fotle主席的思想精髓.于是学了一下划分树,嗯,花了一下午时间理解build(其实自己模拟一遍就通了),我很难理解为什么划分树会看不懂而能学会主席树.唉,学业有先后术业有专攻,斯已矣.其实思想不难理解,代码的话找个样例模拟一遍然后就通了. +++划分树+++. 本人比较懒省事于是就用了二维数组式的风格. 1.sorted[MAXN].原数组排序后的数组(参照下图第一行) 2.tree[20][MAXN].20是划分树的层数,每层最多MAXN个…
题目链接:https://www.luogu.com.cn/problem/P3834 对于区间查询第k小的问题,在区间数量达到5e5的时候是难以用朴素数据结构实现的,这时候主席树就应运而生了,主席树的最基础模板就是查询区间第k小树,其实他在可持久化操作上是十分上手的.主席树在线段树和离散化的基础上实现,树中每一个结点存的是当前结点代表的区间中数的数量,所以初始时刻每个结点的值都是零.然后要插入一个数a到达位置a,并且向上更新所有包含位置a的区间.主席树中每次要插入一个数就新建O(logn)量级…
K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 47066   Accepted: 15743 Case Time Limit: 2000MS Description You are working for Macrohard company in data structures department. After failing your previous task about key inse…
题目大意 给定一个有N个数字的序列,然后又m个查询,形式如下: l r k 要求你返回区间[l,r]第k小的数是哪个 题解 终于弄懂主席树是个啥东西了,O(∩_∩)O~~,这题正是主席树的裸题,主席树具体是啥东西,可以去看CLJ的论文~~~~ 代码是学习haha593572013大神的~~~ 代码: #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> us…
首先看一下这个人的blog吧,讲的精炼http://blog.sina.com.cn/s/blog_4a0c4e5d0101c8fr.html 然后再推荐一下这个人的blog:http://www.cnblogs.com/zinthos/p/3899565.html 这两个博客看了就差不多了. 自己说一下对代码的理解吧. 就是每一个数字开一个空间,然后每个空间用tot标号,最后tot就是总体开的数目.然后不同的线段树可能有相同的左儿子或者右二子(或者左=右,右=左),然后具体都是通过tot的储存…
Problem Kth Number Solution 裸的主席树,模板题.但是求k大的时候需要非常注意,很多容易写错的地方.卡了好久.写到最后还给我来个卡空间. 具体做法参见主席树论文<可持久化数据结构研究>. AC Code #include "cstdio" #include "iostream" #include "cstring" #include "algorithm" using namespace…
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2665 代码: //#include<bits/stdc++.h> #include<iostream> #include<cmath> #include<algorithm> #define fi first #define se second #define INF 0x3f3f3f3f #define fio ios::sync_with_stdio(fal…
主席树就是对每个历史版本都建了一颗线段树,这样我们在统计一些问题的时候,对于一个区间[L,R]的询问,就可以利用前缀和的思想找到第L-1和第R颗历史版本的线段树来处理查找.由于这样空间需求就增大了,注意到如果每个版本之间只是多更新了一个点的话,那么这两颗树就只有一条链不相同,我们不妨在前一颗树的基础上建立第二颗树,用链表做链接,这样就达到了节省空间的目的. Kth number Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32…