随笔分类 -  ACM_数据结构

摘要:题目链接:http://poj.org/problem?id=3253思路分析:题目与哈夫曼编码原理相同,使用优先队列与贪心思想;读入数据在优先队列中,弹出两个数计算它们的和,再压入队列中;代码如下:#include #include using namespace std;struct cmp{ ... 阅读全文
posted @ 2014-11-10 18:31 Leptus 阅读(161) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=1200思路分析:从数据来看,该题目使用线性时间算法,可见子串的比较是不可能的;使用hash可以在常数时间内查找,可以常数时间内判重,可以再线性时间内解决问题;问题关键在与Hash函数的选择,使得子串之间的Hash值不同;由于NC的提示,... 阅读全文
posted @ 2014-10-31 18:49 Leptus 阅读(138) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=1035思路分析:1、使用哈希表存储字典2、对待查找的word在字典中查找,查找成功输出查找成功信息3、若查找不成功,对word增、删、改处理,然后在字典中查询,若查找成功则记录处理后单词在字典中的次序4、对次序排序再输出注:对word处... 阅读全文
posted @ 2014-10-27 23:53 Leptus 阅读(275) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3295思路分析:判断逻辑表达式是否为永真式问题。根据该表达式的特点,逻辑词在逻辑变量前,类似于后缀表达式求值问题。算法中使用两个栈,从表达式的后边开始处理表达式中每个字符;若为逻辑变量,使其入栈SR,否则从栈SR中弹出两个逻辑变量,进行... 阅读全文
posted @ 2014-10-25 01:29 Leptus 阅读(205) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2833思路分析:由于数据量较大,超出存储范围,使用不能使用数组存储数据在进行排序。考虑维护一个最大堆与最小堆,依次读取数据,记录数据中的n1个最大数字与n2个最小数据,所有数据累计和减去堆中数据即可。注意使用记录n2个最大数据要使用最小... 阅读全文
posted @ 2014-10-22 00:44 Leptus 阅读(464) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=1442思路分析:维护一个最小堆与最大堆,最大堆中存储最小的K个数,其余存储在最小堆中;使用Treap构造名次树,查询第K大数即可;代码如下(堆的用法):#include#includeusing namespace std;struct... 阅读全文
posted @ 2014-10-21 23:22 Leptus 阅读(171) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=1936思路分析:字符串子序列查找问题,设置两个指针,一个指向子序列,另一个指向待查找的序列,查找个字符串一次即可判断。算法时间复杂度O(N)。代码如下:#include #include using namespace std;#def... 阅读全文
posted @ 2014-10-09 01:02 Leptus 阅读(256) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=1068思路分析:对栈的模拟,将栈中元素视为广义表,如(((()()()))),可以看做 LS =,对于可以配对的序列,如 看做一个元素,其 W 值为1;同理,为一个元素,其W值为1,看做一个元素, 其W值为 与 、的W的值的和加 1,... 阅读全文
posted @ 2014-10-07 01:24 Leptus 阅读(157) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2255思路分析:根据先序遍历(如DBACEGF)可以找出根结点(D),其后为左右子树;根据中序遍历(如ABCDEFG),已知根结点(D),可以知道在根结点左边的为左子树结点(ABC),右边为右子树结点(EFG);可以求出左子树与右子树结... 阅读全文
posted @ 2014-10-06 15:46 Leptus 阅读(344) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=1002思路分析:先对输入字符进行处理,转换为标准形式;插入标准形式的电话号码到查找树中,若有相同号码计数器增加1,再中序遍历查找树。代码如下:#include #include #include struct TreeNode;type... 阅读全文
posted @ 2014-10-06 04:22 Leptus 阅读(174) 评论(0) 推荐(0)
摘要:题目描述:http://poj.org/problem?id=2823思路分析:求某个区间的最大与最小值,可以使用两个单调队列,由于需要在队列前删除元素和在队列后增加元素,所以考虑使用双端队列;在双端队列中记录元素的下标,另外,双端队列为单调队列,满足单调非递增或单调非递减,则队列第一个元素为区间最... 阅读全文
posted @ 2014-10-06 01:03 Leptus 阅读(188) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3250思路分析:题目要求求每头牛看见的牛的数量之和,即求每头牛被看见的次数和;现在要求如何求出每头牛被看见的次数?考虑到对于某头特定的牛来说,看见它的牛一定在它的左边,另外其高度应该大于该牛的高度,所以只需要计算在其左边并高度大于它的牛... 阅读全文
posted @ 2014-09-22 00:51 Leptus 阅读(340) 评论(0) 推荐(1)