
dsalgo@openjudge全套习题
文章平均质量分 76
mach7
nil
展开
-
最大堆/最小堆、siftup和siftdown
从数据的存储结构看,最大堆/最小堆是一个数组。从数据的逻辑结构看,最大堆/最小堆是一棵完全二叉树。堆有以下三种基本操作:1.初始化:将一个无序的序列初始化成堆。从最后一个非叶子结点开始,自右向左,自下向上,对每一个根结点执行siftdown操作。O(N)。2.插入。在数组的末尾插入新的元素,然后执行siftup操作。O(logN)。3.删除。删除指定位置的元素,用数组末原创 2014-02-26 16:48:50 · 14174 阅读 · 1 评论 -
poj2492 A Bug's Life
先上题目:4:A Bug's Life查看提交统计提问总时间限制: 10000ms 内存限制: 65536kB描述BackgroundProfessor Hopper is researching the sexual behavior of a rare species of bugs. He assumes that they fea原创 2014-03-10 17:23:38 · 1378 阅读 · 6 评论 -
openjudge 求逆序对数
题目如下:4:求逆序对数查看 提交 统计 提问总时间限制: 1000ms 内存限制: 65536kB描述对于一个长度为N的整数序列A,满足1请求出整数序列A的所有逆序对个数输入输入包含多组测试数据,每组测试数据有两行第一行为整数N(1第二行为N个整数,表示长为N的整数序列输出每组数据对应一行,输出逆序对的个数样例输入51 2 3原创 2014-03-28 12:10:39 · 2506 阅读 · 1 评论 -
openjudge DNA排序
5:DNA排序查看 提交 统计 提问总时间限制: 1000ms 内存限制: 65536kB描述现在有一些长度相等的DNA串(只由ACGT四个字母组成),请将它们按照逆序对的数量多少排序。逆序对指的是字符串A中的两个字符A[i]、A[j],具有i A[j] 的性质。如字符串”ATCG“中,T和C是一个逆序对,T和G是另一个逆序对,这个字符串的逆序对数为2。这是题目:原创 2014-03-28 16:51:51 · 2069 阅读 · 0 评论 -
poj1002 487-3279
这是题目:6:487-3279查看 提交 统计 提问总时间限制: 2000ms 内存限制: 65536kB描述Businesses like to have memorable telephone numbers. One way to make a telephone number memorable is to have it spell a memorable word原创 2014-03-29 18:53:34 · 1107 阅读 · 0 评论 -
openjudge 我爱北大
照例先上题目:1:我爱北大查看 提交 统计 提问总时间限制: 1000ms 内存限制: 65535kB描述“红楼飞雪,一时英杰……”耳边传来了那熟悉的歌声。而这,只怕是我最后一次听到这个声音了。想当年,我们曾经怀着豪情壮志,许下心愿,走过静园,走过一体,走过未名湖畔的每个角落。想当年,我们也曾慷慨高歌,瞻仰民主与科学,瞻仰博雅塔顶,那百年之前的遗韵。没错原创 2014-03-18 21:32:37 · 2935 阅读 · 3 评论 -
poj1035 Spell Checker
题目:1:拼写检查查看 提交 统计 提问总时间限制: 2000ms 内存限制: 65536kB描述现在有一些英语单词需要做拼写检查,你的工具是一本词典。需要检查的单词,有的是词典中的单词,有的与词典中的单词相似,你的任务是发现这两种情况。单词A与单词B相似的情况有三种:1、删除单词A的一个字母后得到单词B;2、用任意一个字母替换单词A的一个字母后得到单词B;3、在单原创 2014-03-31 10:37:34 · 1234 阅读 · 0 评论 -
poj1251 Jungle Roads
题目题目题目:2:Jungle Roads查看 提交 统计 提问总时间限制: 1000ms 内存限制: 65536kB描述The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between原创 2014-03-20 01:18:25 · 863 阅读 · 0 评论 -
poj2524 Ubiquitous Religions
照例先上题目8:宗教信仰查看提交统计提问总时间限制: 5000ms 内存限制: 65536kB描述世界上有许多宗教,你感兴趣的是你学校里的同学信仰多少种宗教。你的学校有n名学生(0 输入输入包括多组数据。每组数据的第一行包括n和m,0 输出对于每组数据,先输出它的编号(从1开始),接着输出学生信仰的原创 2014-03-06 00:52:06 · 1187 阅读 · 0 评论 -
openjudge 拓扑排序
题目:5:拓扑排序查看 提交 统计 提问总时间限制: 10000ms 内存限制: 1000kB描述给出一个图的结构,输出其拓扑排序序列,要求在同等条件下,编号小的顶点在前输入若干行整数,第一行有2个数,分别为顶点数v和弧数a,接下来有a行,每一行有2个数,分别是该条弧所关联的两个顶点编号输出若干个空格隔开的顶点构成的序列(用小写字母)样例输入6 8原创 2014-03-20 18:52:05 · 2137 阅读 · 0 评论 -
poj2002 Squares
这是题目:2:正方形查看 提交 统计 提问总时间限制: 3500ms 内存限制: 65536kB描述给定直角坐标系中的若干整点,请寻找可以由这些点组成的正方形,并统计它们的个数。输入包括多组数据,每组数据的第一行是整点的个数n(1此处翻译有误,应为:点到原点的距离小于等于20000)。输入以一组n=0的数据结尾。输出对于每组输入数据,输出一个数,表示这组数据中的原创 2014-04-02 16:28:21 · 2547 阅读 · 2 评论 -
poj3164 Command Network||openjudge 地震之后
这是题目:6:地震之后总时间限制: 1000ms 内存限制: 130000kB描述2008年地震之后,坚强县受灾严重,该县通信线路也收到了致命的打击,县总部为了能够及时的向各村的发送消息,命令小强去解决一下这个问题。小强经过调查发现,为了能够快速的实现通信,当务之急是能够建立起一条从总部可以向各个村单向发送信息的通信系统。由于灾后情况紧急,不是每一个村之间都能够快速的建立起原创 2014-03-24 15:38:19 · 2720 阅读 · 0 评论 -
poj2585 Window Pains
这是题目:3:Window Pains查看 提交 统计 提问总时间限制: 1000ms 内存限制: 65536kB描述Boudreaux likes to multitask, especially when it comes to using his computer. Never satisfied with just running one application at原创 2014-03-25 14:09:00 · 1715 阅读 · 0 评论 -
openjudge 树的镜面映射
2:树的镜面映射查看提交统计提问总时间限制: 1000ms 内存限制: 65536kB描述一棵树的镜面映射指的是对于树中的每个结点,都将其子结点反序。例如,对左边的树,镜面映射后变成右边这棵树。 a a / | \ / | \原创 2014-05-06 17:33:12 · 3325 阅读 · 1 评论 -
poj1703 Find them, Catch them
这是题目:3:Find them, Catch them查看 提交 统计 提问总时间限制: 1000ms 内存限制: 65536kB描述The police office in Tadu City decides to say ends to the chaos, as launch actions to root up the TWO gangs in the city, G原创 2014-04-07 21:00:39 · 2073 阅读 · 0 评论 -
openjudge 寻找中位数
这是题目:2:寻找中位数查看 提交 统计 提问总时间限制: 1000ms 内存限制: 65536kB描述在N(1输入第1行:N第2至N+1行:每行是一个整数输出第一行:中位数样例输入524135样例输出3================================================原创 2014-03-26 23:54:55 · 1711 阅读 · 0 评论 -
openjudge 距离排序
题目题目:1:距离排序查看 提交 统计 提问总时间限制: 1000ms 内存限制: 65536kB描述给出三维空间中的n个点(不超过10个),求出n个点两两之间的距离,并按距离由大到小依次输出两个点的坐标及它们之间的距离。输入输入包括两行,第一行包含一个整数n表示点的个数,第二行包含每个点的坐标(坐标都是整数)。点的坐标的范围是0到100,输入数据中不存在坐标相同的点。原创 2014-03-26 17:44:31 · 2450 阅读 · 0 评论 -
广度优先搜索bfs与抓住那头奶牛(Catch that cow, poj3278)
广度优先搜索(Breadth First Search, BFS)是对树的逐层遍历,或者说,是对树的横向遍历。bfs是盲目的。bfs常被用来求解达到某目标所需的最少步骤数。例如poj3278,给定两个自然数n与k,每一步的移动有三种可能,n+1、n-1和n*2,问,从n出发,到达k所需要的最小移动次数。举个例子,n=5,k=17,则bfs步骤如下:原创 2014-02-26 13:03:38 · 2461 阅读 · 3 评论 -
poj1240 Pre-Post-erous!
照例先上题目:1:Pre-Post-erous!查看 提交 统计 提问总时间限制: 1000ms 内存限制: 65536kB描述We are all familiar with pre-order, in-order and post-order traversals of binary trees. A common problem in data structure cla原创 2014-03-13 10:45:13 · 2781 阅读 · 1 评论 -
二叉树的深度优先dfs遍历(前序、中序和后序;递归与非递归)
二叉树本身就是用递归定义的,因此采用递归方法实现dfs的三种遍历不仅容易理解而且代码简洁。若用非递归实现,则要采用栈去模拟:保存计算的上下文,使得计算在返回上一级时有路可循。注意每一个结点都要当作根结点来看待。//前序遍历//递归实现:根左右void preOrder1(BinTree *root){ if (root != NULL) {原创 2014-02-26 15:18:14 · 8843 阅读 · 0 评论 -
KMP算法、next数组与前缀中的周期(相关题目:Power strings, poj2406)
在一个大的字符串S中查找字符串T,naive的算法时间复杂度为O(s * t)(这里s与t代表S的长度与T的长度);而应用KMP,时间复杂度为O(s + t)。KMP算法的核心在于next数组。next数组只与字符串T有关,与S无关。next数组的核心思想是存储字符串T的内容的相似性信息,具体而言:next数组记录了T的每一个前缀子串M(m>=2)中,(M的)相原创 2014-02-26 13:16:30 · 3613 阅读 · 1 评论 -
单调队列与滑动窗口(Sliding window, poj2823)
单调队列,顾名思义,就是(严格)单调(递增或递减)的队列。下面以单调递减队列为例。单调递减队列:1.单调递减的队列,队首元素总是最大的。2.元素只能从队尾入队,但可以从队尾或队首出队。若待入队的元素>=队尾元素,队尾元素出队,直到待入队的元素=窗口宽度,说明队首元素已不在窗内,队首元素出队。3.单调队列有两个单调性:(1)元素的值是严格单调的,这里是严格单调递减;(2)原创 2014-02-26 11:14:04 · 2464 阅读 · 0 评论 -
栈、Rails(poj1363)与Catalan数
栈是一种线性的、只能在一端操作的、后进先出的数据结构。Rails(poj1363)若1,2,3,4,...,n依次进栈(但不一定是依次连续进栈),然后再出栈,判断某个出栈序列的合法性。思路:人工模拟进栈、出栈的过程。例如,1,2,3,4,5依次进栈,现有出栈序列3,4,2,1,5,问是否合法?第一个出栈的是3,栈目前空,所以1,2,3进栈;栈目前非空,为1,2,3,原创 2014-02-26 11:02:12 · 1246 阅读 · 0 评论 -
递归求huffman树的叶子结点的加权路径长度wpl
由构造方式,显然,huffman树的儿子结点总是成对出现的。因此,一个父节点,要么一个儿子都没有,要么有两个儿子。下面是递归计算wpl(weighted path length)的代码:void calc_wpl(htn *root, int path_count, int *wpl) //root是整个huffman树的根结点{ if(root->leftc==N原创 2014-02-26 17:21:18 · 4827 阅读 · 3 评论 -
由后缀表达式建立表达式树
给出后缀表达式,建立表达式树。后缀表达式中只有操作数和操作符,我们知道,操作数一定是表达式树的叶子结点,操作符一定是父结点。这个过程与计算后缀表达式的值的过程极为类似。操作数,作为叶子结点,可以看作是左右儿子都为NULL的父结点,因此也可以看作一棵二叉树。因此算法是,建立一个二叉树栈,扫描后缀表达式:1.若遇到操作数,把其作为左右儿子都为NULL的二叉树,根原创 2014-02-26 16:29:56 · 3571 阅读 · 1 评论 -
递归求二叉树的层数和递归打印二叉树的树形结构
以下是打印二叉树树形结构的要求:第二部分为表达式树的显示,如样例输出所示。如果该二叉树是一棵满二叉树,则最底部的叶子结点,分别占据横坐标的第1、3、5、7……个位置(最左边的坐标是1),然后它们的父结点的横坐标,在两个子结点的中间。如果不是满二叉树,则没有结点的地方,用空格填充(但请略去所有的行末空格)。每一行父结点与子结点中隔开一行,用斜杠(/)与反斜杠(\)来表示树的关系。/出现的横坐标位原创 2014-02-26 15:59:26 · 8523 阅读 · 3 评论 -
由中根序列和后根序列重建二叉树
题目给出了某棵二叉树的中根序列和后根序列,要求输出前根序列。例如,中根序列是9、5、32、67,后根序列是9、32、67、5,则二叉树是它的前根序列是5、9、67、32。我们知道,中根序列的顺序是“左根右”,后根序列的顺序是“左右根”。因此:1.后根序列的最后一个元素是根。2.由1确定根之后,这个根将中根序列分为左右两个部分:左边是左子树的中根序列,原创 2014-02-26 15:32:05 · 8515 阅读 · 4 评论 -
放苹果(poj1664),递推与递归
/*放苹果 解题分析这也是一个recursion tree,我想到了用递归函数求解,但是实现细节不对路。递归函数思路是这样的:f(m,n)表示m个苹果、n个盘子时候的放法,有以下两种情况:1.m2.m>=n。即果子比盘子多,这又分为两种情况:(1)所有盘子都有至少一个果子,把这个果子都拿掉,放法数量不变,为f(m-n,n);(2)有至少一个盘子为空,于是m个果子要在剩下的n-1个盘子里面放,为f(原创 2014-02-26 10:39:10 · 1225 阅读 · 2 评论 -
用栈将中缀表达式转化为后缀表达式
中缀表达式就是我们通常使用的表达式。后缀表达式,又称为逆波兰表达式,所有操作符置于操作数的后面,且不需要括号来标示操作符的优先级。举个例子:中缀表达式为a*(b+c),其对应的后缀表达式为abc+*。那么,后缀表达式如何计算呢?用栈。以后缀表达式abc+*为例:从左向右依次扫描。操作数入栈,a入栈,b入栈,c入栈;遇到运算符+,取出栈顶的两个元素进行计算,此时为b+c(原创 2014-02-26 10:51:38 · 1844 阅读 · 0 评论 -
poj2499 Binary Tree
先上题目:9:Binary Tree查看提交统计提问总时间限制: 1000ms 内存限制: 65536kB描述BackgroundBinary trees are a common data structure in computer science. In this problem we will look at an infini原创 2014-02-27 13:38:39 · 1467 阅读 · 0 评论 -
openjudge物质分解记录
题目很长:6:物质分解记录查看提交统计提问总时间限制: 60000ms 内存限制: 131064kB描述对 物质分解记录 的结构进行统计分析。例如:给出一份 物质分解记录。Material_1{Material_2{Material_3 Material_4Materi原创 2014-03-04 20:55:56 · 2133 阅读 · 0 评论 -
openjudge树的转换
照例先上题目7:树的转换查看提交统计提问总时间限制: 5000ms 内存限制: 65536kB描述我们都知道用“左儿子右兄弟”的方法可以将一棵一般的树转换为二叉树,如: 0 0 / | \ / 1 2 3原创 2014-03-06 17:21:38 · 2495 阅读 · 0 评论 -
poj1760 Disk Tree
先上题目:3:Disk Tree查看 提交 统计 提问总时间限制: 1000ms 内存限制: 65536kB描述Hacker Bill has accidentally lost all the information from his workstation's hard drive and he has no backup copies of its contents. H原创 2014-03-11 22:50:17 · 2235 阅读 · 0 评论 -
poj3630 Phone List与Trie
题目:9:电话号码查看提交统计提问总时间限制: 1000ms 内存限制: 65536kB描述给你一些电话号码,请判断它们是否是一致的,即是否有某个电话是另一个电话的前缀。比如:Emergency 911Alice 97 625 999Bob 91 12 54 26在这个例子中,我们不可能拨通Bob的电话,因为E原创 2014-03-08 12:35:30 · 1392 阅读 · 0 评论 -
poj2001 Shortest Prefixes
照例先上题目:2:Shortest Prefixes查看 提交 统计 提问总时间限制: 1000ms 内存限制: 65536kB描述A prefix of a string is a substring starting at the beginning of the given string. The prefixes of "carbon" are: "c", "ca",原创 2014-03-12 13:45:54 · 1299 阅读 · 0 评论 -
openjudge 牛的选举
题目:3:牛的选举查看 提交 统计 提问总时间限制: 1000ms 内存限制: 65536kB描述现在有N(1现在给出每头牛i在第一轮期望获得的票数Ai(1<=Ai<=1,000,000,000),以及在第二轮中(假设它进入第二轮)期望获得的票数Bi(1<=Bi<=1,000,000,000),请你预测一下哪头牛将当选总统。幸运的是,每轮投票都不会出现票数相同的原创 2014-03-27 12:58:25 · 2089 阅读 · 4 评论