数据结构
qq172108805
这个作者很懒,什么都没留下…
展开
-
hdu 4251 The Famous ICPC Team Again--划分树
/* 求区间中间值 可以转化为求kth值 所以用了划分树 直接套用了上一篇的函数 上篇有讲解 */ #include #include using namespace std; const int N=100010; int srted[N]; struct node { int num[N]; int val[N]; }t[40]; int n,m; void build(int l,in原创 2012-07-19 10:16:10 · 997 阅读 · 0 评论 -
hdu 4417 Super Mario--二分--划分树
/* 2012年杭州网络赛的题目 就是求一个区间内<=某数 的个数 我是用的二分划分树的方法做的 */ #include #include #include using namespace std; const int N=100010; int srted[N]; struct node { int num[N]; int val[N]; }t[40]; int n,m;原创 2012-10-02 15:17:44 · 851 阅读 · 0 评论 -
hdu 2896 病毒侵袭 -- AC自动机
/* 寻找都有哪些子串 不能保证是字母或数字,所以子节点有差不多130个 */ #include #include #include using namespace std; int biaoshi[510]; const int kind = 130; int dulist[10]; struct node{ node *fail; //失败指针 n原创 2013-03-30 14:24:20 · 952 阅读 · 0 评论 -
HDU 4509 湫湫系列故事——减肥记II 线段树
/* hdu 4509 一天工24*60分钟 接下来有一些时间段,你要去做些事 问你有多少空余时间。 线段树题目 */ #include #include struct node { int l,r,mid,k; }yong[1000000]; int n; void build(int l,int r,int i) { yong[i].l=l; yong[i].r=r; yong[i]原创 2013-03-22 16:54:13 · 1624 阅读 · 0 评论 -
hdu 3265 Posters 线段树+扫描线
/* hdu 3265 Posters 线段树+扫描线 用一些中间有矩形洞的矩形海报去糊窗户 文被覆盖的面积 线段树+扫描线 可以简单看一下扫面线,这里只是简单应用(因为边只有水平、垂直两种,所以不用y=y+1地扫,也不用在求交点) 在水平方向上做线段树,进行扫描 每个矩形记录两条边,底边给这段涂上颜色,顶边把颜色去掉 对于大数据,c++的容器的速度还真不敢恭维,以后还是用c吧 改c的时候原创 2013-04-11 20:58:40 · 1517 阅读 · 0 评论 -
hdu 2795 Billboard 线段树
/* hdu 2795 Billboard 线段树 题意:一个宣传板,h行w列,每个宣传条占1行wi列 现给出一些宣传条,希望贴在最靠上,然后最靠左的地方,输出行号,若无法贴下输出-1 刚开始还以为是一道水题 看过比人的报告才知道是线段树 每个叶子节点记录一行剩余的空余位置,这样貌似需要(1 <= h<= 10^9)个叶子节点 但是, 1 <= n <= 200,000 就算一个条子占一原创 2013-04-14 19:55:52 · 787 阅读 · 0 评论 -
poj 2104 K-th Number--划分树
/* 求区间第k大元素 算法是划分树 划分树的 右子树元素>=左子树元素 划分树的查找过程是: 若[a,b]进入左子树的元素数>=k,就在左子树找; 若元素数n<k,那么k-n个元素在右子树找 所以划分树需要记录从 区间最左边 到 当前元素 有多少进入左子树 故先对数据进行排序 然后通过中间值把元素分成两部分 这就是建树的过程 http://blog.sina.原创 2012-07-19 09:48:09 · 1549 阅读 · 0 评论