随笔分类 -  数据结构

线段数、树状数组、划分树
摘要:跳表是个概率性数据结构,可以被看作是二叉树的一个变种。跳表是由William Pugh在1990年发明的。它是一种用户维护有序元素的数据结构。一个跳表,应该具有以下特征:1.一个跳表应该有几个层(level)组成;2.跳表的第一层包含所有的元素;3.每一层都是一个有序的链表;4.如果元素x出现在第i层,则所有比i小的层都包含x;5.第i层的元素通过一个down指针指向下一层拥有相同值的元素;6.在每一层中,-1和1两个元素都出现(分别表示INT_MIN和INT_MAX);7.Top指针指向最高层的第一个元素。跳表的构造过程是:1、给定一个有序的链表。2、选择连表中最大和最小的元素,然后从其他元 阅读全文
posted @ 2013-08-05 11:31 AndreMouche 阅读(437) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=2896HDU 2896 病毒侵袭大意:有n种病毒,编码已知。有m个网站源码,求带病毒的网站个数以及其对应的病毒Sample Input3aaabbbccc2aaabbbcccbbaaccSample Outputweb 1: 1 2 3total: 1hint:有3种病毒,编码分别为aaabbbccc2个网站,其中网站1包含了编号1,2,3病毒关键字分析:AC自动机。PS:学长出的题,算是模板题吧。。。。贴上来,备着O(∩_∩)O~View Code 1 #include<iostream> 2 阅读全文
posted @ 2011-03-16 22:19 AndreMouche 阅读(759) 评论(0) 推荐(0)
摘要:HDU 2222 Keywords Searchhttp://acm.hdu.edu.cn/showproblem.php?pid=2222大意:给出n个关键字,问在串str中出现了多少关键字。如有5个关键字如下:5shehesayshrher串str = "yasherhs"那么当前str中包含3个关键字,分别为:"she","he","her"分析:AC 自动机这里用的模板是根据网上修改的,子树节点是在插入时new的,寻找失配指针中使用的队列是用数组模拟的。PS:第一道AC自动机,拷完别人的代码。。。。弱。。。 阅读全文
posted @ 2011-03-16 21:11 AndreMouche 阅读(368) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=3630POJ 3630 Phone List大意:电话簿中有n个电话号码,判断这些号码是否合法。若某个电话号码是另一个电话号码的前缀,则该号码簿非法分析:字典树即可注意点,字典树在插入过程中新建节点会超时,故节点用数组的方式存储网上看到一个风格较好的代码,模仿了一下写的,原始网站http://www.cnblogs.com/sysuwhj/archive/2010/11/17/1880328.htmlView Code 1 /*2 http://poj.org/problem?id=36303 POJ 3630 Phone List4 大意 阅读全文
posted @ 2011-03-16 19:29 AndreMouche 阅读(654) 评论(0) 推荐(0)
摘要:昨天把KMP复习了一下,顺便做了一些以前做过的题,貌似有那么点感觉O(∩_∩)O~贴出来,方便以后复习,O(∩_∩)O~http://poj.org/problem?id=1961POJ 1961 Period大意: 定义字符串A,若A最多由n个相同字串s连接而成,则A=s^n,如"aaa" = "a"^3,"abab" = "ab"^2 "ababa" = "ababa"^1 给出一个字符串A,求该字符串的所有前缀中有多少个前缀SA= s^n(n>1)输出符合条件的前 阅读全文
posted @ 2011-03-15 13:17 AndreMouche 阅读(1567) 评论(0) 推荐(0)
摘要:POJ 3667 Hotelhttp://poj.org/problem?id=3667题目大意: 奶牛们最近的旅游计划,是到苏必利尔湖畔,享受那里的湖光山色,以及明媚的阳光。作为整个旅游的策划者和负责人,贝茜选择在湖边的一家著名的旅馆住宿。这个巨大的旅馆一共有N (1 <= N <= 50,000)间客房,它们在同一层楼中顺次一字排开,在任何一个房间里,只需要拉开窗帘,就能见到波光粼粼的湖面。 贝茜一行,以及其他慕名而来的旅游者,都是一批批地来到旅馆的服务台,希望能订到D_i (1 <= D_i <= N)间连续的房间。服务台的接待工作也很简单:如果存在r满足编号为r 阅读全文
posted @ 2011-03-12 12:39 AndreMouche 阅读(1119) 评论(1) 推荐(1)
摘要:http://acm.tju.edu.cn/toj/showp3758.htmlTJU 3758. Jewel 模拟题,开始数组为空,有以下操作:Insert x Put a bead with size x to the right of the chain (0 < x < 231, and x is different from all the sizes of beads currently in the chain)Query_1 s t k Query the k-th smallest bead between position s and t, inclusive. 阅读全文
posted @ 2011-03-05 20:26 AndreMouche 阅读(343) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/submit.php?pid=3473HDU 3473 Minimum Sum大意:已知n个正整数x0,x1,x2...xn-1排成一列,要求回答若干问题,问题类型如下:给你一个区间[l,r],要求sum(x-xi)(l<=i<=r)的最小值,其中x必须为xl,xl+1...xr中的一个数分析:易推得对于任意区间[l,r],符合条件的x为所在区间的中位数,求任意区间的中位数可以用划分树来解决,同样的,我们用suml[deep][i]来记录划分树中第deep层到数i位置放入左子树的数字的和,注意:当最后得出中位数median左边的和suml 阅读全文
posted @ 2011-03-05 18:50 AndreMouche 阅读(771) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=2104POJ 2104 K-th Number大意:有n个数字排成一列,有m个询问,格式为:left right k即问在区间[left,right]第k大的数据为多少?分析:划分树具体的介绍开心->OK介绍得很清楚,这里把他PPT里的部分贴上来,邪恶一把,嘿嘿。。建图:建树的过程比较简单,对于区间[l,r],首先通过对原数组的排序找到这个区间的中位数a[mid],小于a[mid]的数划入它的左子树[l,mid-1],大于它的划入右子树[mid,r]。同时,对于第i个数a[i],记录在[l,i]区间内有多少数被划入左子树。最后,对它的 阅读全文
posted @ 2011-03-04 22:35 AndreMouche 阅读(917) 评论(0) 推荐(0)
摘要:POJ 3067 Japan核心算法:一维树状数组大意:Japan在东边有n座城市,从北到南编号依次为1,2,3...n在西边有m座城市,从北到南编号分别为1,2,3...m现要在南北城市之间修建k条超级高速公路,求会出现多少个十字路口(注:每个十字路口只能由两条交叉的路所构成)输入:T .....cases数 n,m,k 以下k行每行对应于一条高速公路,由两个数字(xi,yi)组成,xi对应于东城编号,yi西城编号输出:十字路口数目分析:1.对该数组先按y从大到小排序,若y相等,则按x从大到小排序2.从前往后扫描各条高速公路,对路(xi,yi)其与前面点的交点数目为其左上角路的个数,即所有的 阅读全文
posted @ 2011-02-10 19:39 AndreMouche 阅读(491) 评论(0) 推荐(0)