自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (6)
  • 收藏
  • 关注

转载 后缀树(转)

后缀树 在《字符串匹配算法》一文中,我们熟悉了字符串匹配问题的形式定义:文本(Text)是一个长度为 n 的数组 T[1..n];模式(Pattern)是一个长度为 m 且 m≤n 的数组 P[1..m];T 和 P 中的元素都属于有限的字母表 Σ 表;如果 0≤s≤n-m,并且 T[s+1..s+m] = P[1.

2016-12-30 12:01:47 461

转载 持久动态集合的二叉查找树实现

题目解答:      a) 不管是插入还是删除,需要改变的节点包括从根节点开始到要插入或者删除位置的路径上的所有节点。      b) 其中key[x] == k;PERSISTENT-TREE-INSERT(T, x){ curr <- root[T]; T' <-NULL, p <-NULL;//T'为新根,p记录查找过程中当前节点的父亲 while (curr

2016-12-24 22:32:02 654

原创 POJ 2001 : Shortest Prefixes (字典树)

题意 : 给你一些字符串,让你为每个字符串找一个最短的前缀,来唯一标识这个字符串,与其他字符串区别开来.这个标志串不能是其他字符串的前缀,除非这个标志串等于这个字符串本身.考虑用字典树来做.标志当前位是否是结尾位,作为一个边界条件.先将所有字符串按长度排序,每次对一个字符串按位插入字典树里,将路过的位置num加1.最后,如果当前位的num是1,说明到当前位为止的前缀可以唯一标志这个字符串,保存这个

2016-12-21 00:04:25 473

转载 POJ 3745 : Training little cats(矩阵快速幂加优化)

总时间限制: 2000ms 内存限制: 65536kB 描述 Facer’s pet cat just gave birth to a brood of little cats. Having considered the health of those lovely cats, Face

2016-12-20 21:39:58 468

原创 POJ 1785 : Binary Search Heap Construction

描述 Read the statement of problem G for the definitions concerning trees. In the following we define the basic terminology of heaps. A heap is a tree whose internal nodes have each assigned a pr

2016-12-20 21:12:05 606

转载 POJ 1830 开关问题(高斯消元法)

中文题目,就不说题目大意了 解题思路: 由于对于每一个开关最多改变一次,那么对于每一个开关,只有改变与不改变两种操作,设改变操作为1,不改变操作为0,那么对开关的操作可以用一个n维向量x⃗ T=(x1,x2,⋯,xn)。 我们需要知道初始状态经过某次操作之后的状态,并拿它与目标状态比较。我们知道,对于开关i。

2016-12-20 10:09:38 664

原创 POJ 2446 : Chessboard(二部图算法)

可以将棋盘看成国际象棋的棋盘,也就是说,相邻两格的颜色不同,设为白色和黑色.那么白色格子和黑色格子就构成了一个二部图,只能在异色格子之间连线.现在就是要求完美二部图匹配,判断最后的匹配数是否等于没有洞的格子数.这里我用邻接链表来当存储结构,节省了很大空间开销. 总时间限制: 2000ms 内存限制: 65536kB

2016-12-17 01:19:58 607

转载 趣味理解匈牙利算法(转载)

【书本上的算法往往讲得非常复杂,我和我的朋友计划用一些简单通俗的例子来描述算法的流程】匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名。匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。——-等等,看得头大?那么请看下面的版本:通过数代人的努力,你终于赶上了剩男剩女的大潮,假设你是一位

2016-12-17 01:13:16 493

原创 POJ 2752: Seek the Name, Seek the Fame(简单KMP-NEXT数组的应用)

题意大概就是给你一个很长的字符串,然后让你找所有满足”前缀=后缀”的长度.很显然,使用KMP里的求解NEXT数组的思想.最长的是串的长度,假设为len这里将next数组做一个变形,让next[i] = next[i+1],那么,第二长的长度就是next[len-1].通过举例子可以发现,这是个不断迭代的过程,第三长的是next[ next[len-1] -1 ],最后直到next[t]<1时迭代结束

2016-12-16 14:16:00 417

原创 POJ 4093 倒排索引查询(STL set 的应用)

这个主要就是一个集合的交-差问题.由于数据量比较大,考虑用 STL 里面的SET 来当数据结构,存储每个单词出现的文档编号.我的思路是,找到一个为 1 的单词的下标,把这个单词的文档编号输出到 res 中,然后遍历,遇到0,什么也不做;遇到-1,就判断res中是否有这些文档,如果有,就删除;遇到1,就取交集,这里可以用一个 temp set集合来存储公共元素.(或者直接用两个迭代器在两个SET里面遍

2016-12-16 14:04:45 833

原创 百练 1258 : Agri-Net(最小生成树)

这个题目是让你求出联通所有点所需要的最小代价,就是最小生成树问题.之前学过Kruskal算法,就用并查集写了个最小生成树的生成算法.Kruskal算法:将边按权重大小排序,每次取权重最小的边,如果两个点属于不同的集合,归并,否则遍历下一条边,知道所有点都在同一集合,归并结束.总时间限制: 1000ms 内存限制: 65536kB**描述**Farmer John has been elected

2016-12-14 15:59:47 391

转载 15个经典算法集锦 (转)

15个经典算法集锦,算是一个目录+索引,共计31篇文章:十五个经典算法集锦   十五个算法集锦,目录+索引,共计二十三篇文章。手动转载至”七月在线”– v_JULY_v 的博客(点击链接,即可打开)。  一、A*搜索算法一(续)、A*,Dijkstra,BFS算法性能比较及A*算法的应用二、Dijkstra 算法初探          (Dijkstra算法系列4篇文章)二(续)、彻底理解Dij

2016-12-14 15:39:27 655 1

原创 百练 4089 电话号码 -- 树的应用

怎么说呢,这题是树的简单应用,基本只要写完运行无错误是可以一遍AC的.再加上今晚发烧,身体很不舒服,就迷迷糊糊的把这题给写了.4089:电话号码总时间限制: 1000ms 内存限制: 65536kB描述 给你一些电话号码,请判断它们是否是一致的,即是否有某个电话是另一个电话的前缀。比如:Emergency 911 Alice 97 625 999 Bob 91 12 54 26在这个例子中,

2016-12-10 23:18:10 833

原创 发型糟糕的一天(简单的单调栈运用)

提供两种解法,比较类似 一种是从后向前维护单调递增栈; 另一种是从前向后维护单调递减栈.描述农夫John 的N(1 ≤ N ≤ 80,000)只奶牛中,有一些也许正在经历发型糟糕的一天。每只奶牛对自己乱糟糟的发型都有自知之明,农夫John想知道所有奶牛能看到其他奶牛头顶的数量之和。任意奶牛i身高记为 hi (1 ≤ hi ≤ 1,000,000,000),所有奶牛面向东方(本题示意图的右面)依

2016-12-09 17:06:56 1084

原创 用邻接链表和队列实现拓扑排序

之前写拓扑排序是通过邻接矩阵写的,应对小的数据量还可以,但要是顶点数很大时,开的邻接矩阵就未免太大了.今天学习了用邻接表实现拓扑排序,比较简单,所幸,写完后一遍编译通过 + 一遍AC.**描述**给出一个图的结构,输出其拓扑排序序列,要求在同等条件下,编号小的顶点在前**输入**若干行整数,第一行有2个数,分别为顶点数v和弧数a,接下来有a行,每一行有2个数,分别是该条弧所关联的两个顶点编号**

2016-12-09 16:00:51 1959

转载 stick-learn 朴素贝叶斯的三个常用模型:高斯、多项式、伯努利

朴素贝叶斯是一个很不错的分类器,在使用朴素贝叶斯分类器划分邮件有关于朴素贝叶斯的简单介绍。若一个样本有n个特征,分别用x1,x2,…,xn表示,将其划分到类yk的可能性P(yk|x1,x2,…,xn)为:P(yk|x1,x2,…,xn)=P(yk)∏ni=1P(xi|yk)上式中等号右侧的各个值可以通过训练得到。根据上面的公式可以求的某个数据属于各个分类的可能性(这些可能性之和不一定是1),该数据应

2016-12-09 14:58:55 1266

原创 百练 2492 : A Bug's Life --并查集简单应用

他说每个测试输出两行,其实是三行吧,否则PE. 并查集的简单应用,类似于”发现它,抓住它”.描述Hopper 博士正在研究一种罕见种类的虫子的性行为。他假定虫子只表现为两种性别,并且虫子只与异性进行交互。在他的实验中,不同的虫子个体和虫子的交互行为很容易区分开来,因为这些虫子的背上都被标记有一些标号。现在给定一系列的虫子的交互,现在让你判断实验的结果是否验证了他的关于没有同性恋的虫子的假设或者是否

2016-12-08 16:26:45 2014 2

原创 OpenJudge : Rainbow的商店 (模拟)

维护天数和价值的递增的序列(用结构体 + sort实现),对天数进行枚举,输出当前天数以及当前天数之后的最大的价值,并将这个价值的访问数组置为1,下次不再访问.累加获得res,输出结果.描述Rainbow开了一家商店,在一次进货中获得了N个商品。已知每个商品的利润和过期时间。Rainbow每天只能卖一个商品,并且过期商品不能再卖。Rainbow也可以选择在每天出售哪个商品,并且一定可以卖出。由于

2016-12-08 11:31:34 1431

原创 如何运用归并排序快速求得逆序对数目

逆序对数目可以直接穷举,但效率很低,O(n^2)级别. 可以用树状数组写. 这里介绍运用归并排序来求逆序对数目.归并排序过程中,针对两个内部有序的串, 实现插入排序,即两串开头的元素,小的进入目标串,直到所有元素都输出. 假设左串当前元素比右串当前元素大. 那么左串剩下的元素一定都比右串当前元素大,都是逆序对. 那么这里逆序对就有 (mid - index_left + 1 )对累加,最

2016-12-08 03:12:46 2705 1

原创 促销活动 (优先队列的应用)

描述 Great Bytelandish超市联盟想请你编写一个程序模拟计算促销活动的开销促销活动遵守以下规则:参加促销活动的客户,可以在消费结束后将自己的消费账单投入一个指定的投票箱里当一天的促销活动结束时,将从投票箱中选出两份账单:一份是消费金额最大的账单,一份是消费金额最小的账单。最大金额账单对应的客户,将得到一笔奖金,奖金数等于金额最大的账单与金额最小的账单之间的差值。输入保证总可以找到这样

2016-12-08 03:07:27 1845

原创 社交网络 (并查集的应用)

很简单的并查集基础应用,相当于连通图的问题,将可连接的节点归并到同一个节点下即可.直接上代码.描述 随着社交平台的兴起,人们之间的沟通变得越来越密切。通过Facebook的分享功能,只要你是对方的好友,你就可以转发对方的状态,并且你的名字将出现在“转发链”上。经过若干次转发以后,很可能A分享了一条好友C的状态,而C的这条状态实际上是分享B的,但A与B可能并不是好友,即A通过C间接分享了B的状态。

2016-12-08 03:05:26 2011

原创 欧拉回路

欧拉图的充要条件:是连通图并且奇度顶点个数为0. 判断是否是连通图一方面可以用搜索/遍历,另一方面可以用并查集,归并的思想.但是这个题目的数据貌似有点问题,导致有些方法交上去一直是9分(满分10分)就很气了.下面放上10分的AC代码描述欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路给定一个无向图,请判断该图是否存在欧拉回路输入 输入数据包含若干测试用例 每个测试用

2016-12-07 19:48:59 491

原创 中缀表达式的值

由于不想循规蹈矩…所以,不想转后缀再求后缀表达式的值,所以就直接利用中缀表达式和两个栈进行求值,一个栈放数字,另一个栈放操作符.调试的时候稍微遇到了些瓶颈,不过大体来说还是比较顺利的.就是要注意栈非空,栈里只有一个左括号等条件的判定.中缀表达式的值总时间限制: 200ms 内存限制: 1024kB描述人们熟悉的四则运算表达式称为中缀表达式,例如(23+34*45/(5+6+7))。在程序设计语言中,

2016-12-06 14:08:00 1788

原创 POJ 1463 :Strategic game 树形动规

`Time Limit: 2000MS Memory Limit: 10000KDescriptionBob enjoys playing computer games, especially strategic games, but sometimes he cannot find the solution fast enough and then he is very sad. Now

2016-12-06 01:33:55 412 1

原创 POJ 2559 Largest Rectangle in a Histogram --维护单调栈

相当于对于当前点 i ,求向左和向右分别能延伸到的位置 l[i], r[i],然后最后求 MAX(h[i] * (r[i]-l[i]) ).意思是向两边找到比它矮的位置为止.至于为什么比他矮就不能延伸了,这是因为要计算的高度是 h[i],如果遇到比 h[i] 小的还继续延伸,那么另一端也可以继续延伸,动态规划就不成立了.求 l[i] 时,维护一个递增栈,考虑当前的 i,如果栈顶元素不小于 i ,弹出

2016-12-05 22:01:07 390

原创 网易2017秋招编程题集合

第一次做这种试卷,提交了才发现原来就算你全AC了,提交次数多的话也会扣你分==直接上题,注释我认为很多了.代码全部用C++完成.[编程题]1.回文序列如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列。例如:{1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列, {1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11}

2016-12-03 20:15:00 525 3

原创 Onenjudge 百炼 1703 ---- 发现它,抓住它 (并查集的应用)

发现它,抓住它 一个城市中有两个犯罪团伙A和B,你需要帮助警察判断任意两起案件是否是同一个犯罪团伙所为,警察所获得的信息是有限的。假设现在有N起案件(N<=100000),编号为1到N,每起案件由团伙A或团伙B所为。你将按时间顺序获得M条信息(M<=100000),这些信息分为两类: 1、 D [a] [b] 其中[a]和[b]表示两起案件的编号,这条信息表明它们属于不同的团伙所为2、A [a] [b]

2016-12-01 20:04:50 5231 3

原创 百炼 4088 集合运算

4088:集合运算总时间限制: 3000ms 单个测试点时间限制: 1000ms 内存限制: 65536kB描述 设 A = {a1, a2, … , an}, B = {b1, b2, … , bm} 是非负整数集合,其中m = O(logn)。 设计算法计算集合 C = (A − B) ∪ (B − A)。输入 输入文件包含2行。 第1行的第一个数为n,表示A集合的大小,接下来跟有

2016-12-01 13:31:47 1913

原创 在O(n)时间内查找数组内第k小的数

前一阵子做作业,看到了这个,要求在 O(n) 时间内查找前 k 小的 k 个数,给出的提示是,先在 O(n) 时间内查找到第 k 小的数.由此想到,此前一直用的 sort 函数,排完序后找下标为 k-1 的那个数,却从来没有考虑过具体的实现.结合前一阵子学习的快速排序算法,大致对此有了新的认识.首先给出一个函数,可以求出轴值在(排完序的)数组中的位置. 这里是假设区间的第一个数为轴值.int Pa

2016-12-01 13:02:28 2670

原创 百炼 2804 词典

2804:词典总时间限制: 3000ms 内存限制: 65536kB描述你旅游到了一个国外的城市。那里的人们说的外国语言你不能理解。不过幸运的是,你有一本词典可以帮助你。输入首先输入一个词典,词典中包含不超过100000个词条,每个词条占据一行。每一个词条包括一个英文单词和一个外语单词,两个单词之间用一个空格隔开。而且在词典中不会有某个外语单词出现超过两次。词典之后是一个空行,然后给出一个由外

2016-12-01 12:01:04 2339

印刷体数字&&字母数据集

印刷体数字和字母的数据集,每个类别有1000张左右的图片

2019-01-03

斯坦福大学概率图模型PGM讲义

斯坦福大学概率图模型的讲义,以及笔者自行整理的部分note

2018-09-13

MATLAB中文用户手册

MATLAB中文用户手册。包含各种代码的作用以及实例。、

2018-09-13

常用中文停用词表

常见中文停用词表。包含标点符号、数字,某些英文单词等。

2018-09-13

计算机网络(严伟、潘爱民译) 清华大学出版社 第五版 答案

计算机网络(严伟、潘爱民译) 清华大学出版社 第五版 答案 ------1-7章,基本所有题目都有,中文版,Word文档------ 计算机网络(严伟、潘爱民译) 清华大学出版社 第五版 答案

2017-09-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除