数据结构
ConwayTian
一切再来,为时未晚。
毁掉你人生的,其实是你内心的平庸,是你失去追求卓越的那个瞬间。
展开
-
POJ 3349 Snowflake Snow Snowflakes hash
题意:每个雪花有六个角,每个角用一个数字表示。输入n个雪花,若存在两个雪花相等则输出Twin snowflakes found。否则输出No two snowflakes are alike.题解:hash#include #include using namespa原创 2011-07-27 11:11:59 · 615 阅读 · 0 评论 -
POJ 1936 All in All 字符串 水题
题意:没什么好说的,不过因为没看清题,输出大写的YES,NO,贡献了两次,泪流满面。函数strlen不要写在循环内就OK了。否则会耗去大半时间。题解:#include using namespace std;#define N 100010char str1[N]原创 2011-07-27 14:30:17 · 545 阅读 · 0 评论 -
POJ 1840 Eqs hash
题意:解方程组a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0 ,x属于[50,50]且x!=0输入a1,a2,a3,a4,a5,输出一共有多少种满足方程的解。题解:左右分开,hash#include using namespace std;#原创 2011-07-28 22:47:10 · 581 阅读 · 0 评论 -
POJ 2002 Squares hash/计算几何
题意: 给出一些坐标点,求出能构成的正方形的个数。题解:此题也可用二分查找。#include using namespace std;#define prime 9973struct point{ int x, y;} a[1010];struct n原创 2011-07-30 11:26:52 · 662 阅读 · 0 评论 -
POJ 2503 Babelfish hash / qsort+ bsearch
题意:先输入字典,然后查词。(以输入空格为界)题解:别忘了字符串二分查找#include #include using namespace std;#define prime 100003struct Union{ char eng[11], fore原创 2011-07-30 16:08:37 · 742 阅读 · 0 评论 -
POJ 2823 Sliding Window 堆 / 单调队列
题意:给定一串数字,一个定长的窗口,窗口每次平移一个位置,输出窗口中的最大值。题解:堆与映射 平常,我们用堆,最常见的就是随机地加入元素,随机地取最大值或最小值。这些基本的操作C++中的priority_queue和set都能很好的完成,而且C++中还有一个mak原创 2011-08-01 20:13:07 · 893 阅读 · 0 评论 -
HDU 4041 Eliminate Witches! 树的遍历
题意:2011北京网赛题目。输出遍历的路径。#include #include #include #include using namespace std;#define N 1000010#define M 50010struct Item{原创 2011-09-20 16:29:08 · 1174 阅读 · 0 评论 -
HDU 4006 The kth great number 堆/优先级队列/线段树
题意:先输入两个整数 n, k。然后有 n 行输入, I 代表写下一个数字, Q代表询问在所有写下的数字中第 k 大的数数多少?题解:因为当写下的数少于 k 个是不存在询问的情况。所以可以建一个堆,然后没写下一个数字,若它比堆中的最小数字还小,则堆不做改变。若它比堆中的最小数字要大,那么将堆中的最小数字去掉,并加入刚写入的数字。具体写了三种方法:方法一:最小堆#include原创 2011-09-05 16:48:53 · 897 阅读 · 0 评论 -
POJ 3253 Fence Repair 哈夫曼树/优先级队列
题意:将一根长为l的木棍锯成n段,使l1+l2+l3+....= l, 且每次锯木棍所需花费等于木棍长度。求最小花费。题解:学习优先级队列。#include #include #include using namespace std;struct cmp{ bool operator () ( const int &a, const int &b ) {原创 2011-07-31 17:32:38 · 969 阅读 · 0 评论 -
POJ 2255 Tree Recovery 二叉树遍历
题意:给出一棵二叉树的先序遍历和中序遍历,输出它的后序遍历。题解:#include using namespace std;char preorder[30], inorder[30], postorder[30];int len;void travel ( int pStart, int pEnd, int inStart, int inEnd ){ if原创 2011-09-09 11:12:20 · 839 阅读 · 0 评论 -
POJ 2406 KMP
题意:给定一个字符串,如 str : ababab, 则 str = ab ^ 3, 输出3。 又如 abcd, 输出 1。题解:next 函数的应用, 理解并记住。#include using namespace std;#define N 1000005c原创 2011-08-12 21:05:00 · 569 阅读 · 0 评论 -
POJ 1961 KMP
题意:输入一个字符串S,求的每一个前缀可否由某个更小的前缀重复构成。比如aabaabaabaab,前2位是aa,a重复了2次,前6位是aabaab,aab重复了2次,前9位是aabaabaab,aab重复了3次,前12位是aabaabaabaab,aab重复了4次。题解:算是原创 2011-08-12 17:15:45 · 548 阅读 · 0 评论 -
POJ 1442 堆
仿照:http://www.2cto.com/kf/201106/92643.html题意:给出两种操作:ADD(x),将x添加到有序列表中;GET()返回全局迭代器所指的值,其中迭代器在GET操作后会自添加1题解:大顶堆和小顶堆。 其中,对于序列S[1..n]原创 2011-08-02 21:46:48 · 2420 阅读 · 0 评论 -
HDU 1251 Trie树
第一次写Tire树,完全抄的模板。#include using namespace std;const int kind = 26; struct Treenode{ int count; Treenode *next[kind]; Treenode () {原创 2011-08-03 22:38:20 · 612 阅读 · 0 评论 -
HDU 1247 Trie树
题意:按字典序输入一系列单词,输入结束后,判断哪些单词是由其余两个单词连接而成。若是,则输出(输出也按字典序)。#include using namespace std;char list[50001][26];const int kind = 26;int cnt原创 2011-08-04 16:42:14 · 1101 阅读 · 0 评论 -
POJ 3080 Blue Jeans KMP
题意: 输入M个定长为60的DNA序列(字符串),求M条DNA的最长公共子序列,若有最长的公共子序列有若干条,则输出字典序最小的。显然是一个字符串匹配问题。第一次用KMP算法。幸好看了严蔚敏老师的数据结构视频(第11,12),讲的很细。题解:需要注意输出字典序最小的模式序原创 2011-07-26 21:58:03 · 531 阅读 · 0 评论 -
POJ 3630 Trie树
题意:给你一系列互不相同的电话号码,若存在某个号码是其他某个号码的前缀,则输出不相容(NO), 否则输出相容(YES)。#include using namespace std;const int kind = 10;//代表字符种类,共10个,1,2,3,4,5,6,原创 2011-08-04 14:47:50 · 576 阅读 · 0 评论 -
POJ 2001 Trie树
题意:输入一系列单词,找到每一个单词特有的前缀,且使前缀尽量的短。#include using namespace std;const int kind = 26;int k = 0;struct Tree{ int count; Tree *next[kind原创 2011-08-05 11:16:27 · 550 阅读 · 0 评论 -
POJ 2752 KMP
题意:给定一个字符串, 如 alala, 求既是它前缀,又是它后缀的子串( a, ala, alala ) ,按升序输出所以可能的子串的长度。 题解:next 函数的应用。当然用hash也可以。#include using namespace std;#def原创 2011-08-12 21:44:18 · 580 阅读 · 0 评论