ACM-数据结构
暗金色
这个作者很懒,什么都没留下…
展开
-
UVA - 11988 Broken Keyboard (a.k.a. Beiju Text) 链表
题目大意:给出一串字符,表示从键盘输入的字符,字符里面的’[‘表示键盘的home键,’]’表示键盘的end键,现要求输出这字符串在显示器上的显示解题思路:链表,处理时要小心. 我是记录该字符串在原字符串中的起始位置,遇到左右中括号就改成’\0’#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#d原创 2015-03-25 20:11:37 · 523 阅读 · 0 评论 -
UVA - 1594 Ducci Sequence (set)
题目大意:给出N个数字,有一个运算,用当前这个数和它后面相减的绝对值代替掉当前的那个数,然后用最后一个和第一个的相减的绝对值代替到最后面那个数,问这样一直计算,最后是形成了循环还是所有数都变成了0解题思路:把所有的数转换成字符串,中间用一个分隔符给开(这里我是用’,’),然后将字符串放到set里面进行判断#include<cstdio>#include<cstring>#include<stri原创 2015-04-09 23:09:44 · 638 阅读 · 0 评论 -
UVA - 10935 Throwing cards away I (数组)
题目大意:桌子上有n张牌,从1到n,每次把最顶上的那张牌丢到,然后把下一张放到最后一张后面,问丢掉的牌和最后一张是什么解题思路:用数组模拟,注意1的时候#include<cstdio>#include<cstring>int num[10000];int main() { int n; while(scanf("%d", &n) == 1 && n) { memse原创 2015-04-09 23:51:38 · 581 阅读 · 0 评论 -
UVA - 514 Rails 经典栈使用
题目大意:有一列n节车厢的火车要入栈,车厢从1到n,只能从小到大入栈。 现在给出一个出栈顺序,问能否实现解题思路:如果栈顶元素大于要出栈的数,肯定就不能实现了。 如果栈顶元素小于要出栈的数,就继续入栈 如果栈定元素等于要出栈的数,就出栈#include<cstdio>#include<algorithm>#include<stack>using namespace std;#defin原创 2015-05-09 23:12:26 · 754 阅读 · 0 评论 -
UVA - 442 Matrix Chain Multiplication 双端队列
题目大意:给出n个矩阵和表达式,问该表达式是否正确,如果计算正确,输出计算了多少次解题思路:双端队列,遇到右括号时弹出后面的两个矩阵进行乘法,相乘时要注意顺序,是第二个出队列的乘上第一个出队列的。#include<cstdio>#include<algorithm>#include<deque>#include<map>#include<cstring>using namespace st原创 2015-05-10 00:19:22 · 669 阅读 · 0 评论 -
UVA - 122 Trees on the level Map
题目大意:给出一些字符串表示二叉树,字符串的格式如下(n,s),n表示节点上的数,s表示该节点在哪个位置,问这些字符串能否组成二叉树解题思路:能否组成二叉树,首先需要判断根节点。 接着判断一下其他节点,按层次遍历的顺序来枚举,所以要先排序,按字符串的长度来排序。 如果该节点能是二叉树的节点,那么他的父节点就要存在 判断他的父节点是否存在,只需判断他的前len-1(len表示长度)个字符组成的串原创 2015-05-10 23:45:29 · 661 阅读 · 0 评论 -
UVA - 679 Dropping Balls 规律
题目大意:给出一棵完全二叉树,每个节点上都有一个开关,刚开始开关都是开的,球经过该节点后开关就关上了(根节点除外)。如果球经过该节点的兄弟节点,那么该节点的开关就又开了 现在往根节点放球,优先选择左边的节点走,如果左边的节点的开关关了,就选择右边的。球落到叶节点后就继续另一颗球,问第n颗球落到了哪个叶节点上解题思路:其实这题蛮水的,因为是二叉树,所以可以由球的奇偶行来判断球往哪个分支走,如果n %原创 2015-05-10 23:54:07 · 1104 阅读 · 0 评论 -
UVA - 10562 Undraw the Trees
题目大意:给一个而成原创 2014-10-15 16:41:42 · 641 阅读 · 0 评论 -
UVA - 327 Evaluating Simple C Expressions
题目大意:给你一系列的表达式,要求计算结果和输出表达式的字母的最后的之原创 2014-10-14 19:14:03 · 943 阅读 · 0 评论 -
UVA - 548 Tree
题目大意:求一棵树的叶节点到跟节点原创 2014-10-14 00:12:02 · 619 阅读 · 0 评论 -
UVA - 112 Tree Summing
题目大意: 给出广义表和原创 2014-10-13 22:08:48 · 623 阅读 · 0 评论 -
UVA - 699 The Falling Leaves
题目大意:求二叉树的垂直的数字的和是多少解题思路:假设中间那个为n,则左右里那个个原创 2014-10-12 15:17:03 · 528 阅读 · 0 评论 -
UVA - 297 Quadtrees
题目大意:求两张图片合并起来后原创 2014-10-12 13:33:47 · 558 阅读 · 0 评论 -
UVA - 1593 Alignment of Code 纯代码功底
题目大意:给你N行的字符串,要求对这N行字符串进行改装,输出时,原来连续的字符用一个空格隔开,每行的单词竖直对齐,且每行的长度要求达到最短且无前导或者后导空格解题思路:记录每个字符串的单词的长度,然后用一个数组统计一下每一列的单词的最长长度,输出时,如果单词长度低于该列的最大长度,就用空格补齐#include<cstdio>#include<algorithm>#include<cstring>原创 2015-04-09 22:31:56 · 1163 阅读 · 0 评论 -
UVA - 1592 Database map+pair
题目大意:给出一个n行m列的数据库数据,找出是否存在不同行r1,r2和两个不同列c1,c2使得这两行两列相同解题思路:STL的应用,用pair将一行的两列合并成一个数,然后在用map映射,看是否存在#include<cstdio>#include<cstring>#include<map>#include<string>using namespace std;#define maxn 10原创 2015-04-08 20:46:45 · 584 阅读 · 0 评论 -
UVA - 12096 The SetStack Computer STL的大集合
题目大意:给出几种操作 PUSH:在栈顶压入一个空集 DUP:把栈顶的集合复制一下在放入栈顶 ADD:取出栈顶两个集合相加,再把结果放入栈顶 UNION:取出栈顶两个集合,取这两个集合的并集并放入栈顶 INTERSET:取出栈顶两个集合,取这两个集合的交集并放入栈顶解题思路:用STL#include<cstdio>#include<cstring>#include<algorithm>原创 2015-03-30 20:26:12 · 551 阅读 · 0 评论 -
UVA - 11991 Easy Problem from Rujia Liu? map+vector
题目大意:给出n个数,m个询问,询问为v k,要给你输出k在n个数种第v次出现的位置解题思路:用vector数组记录出现的位置,但题目的n有点大,所有用map来进行映射#include<cstdio>#include<algorithm>#include<cstring>#include<queue>#include<map>#include<vector>using namespace原创 2015-03-22 20:50:07 · 470 阅读 · 0 评论 -
UVALive - 3135 Argus 优先队列
题目大意:给你n个触发器,每个触发器都有标号和间隔时间,然后要求你依据触发事件输出前k个触发器的标号,如果触发时间相同,就输出编号小的那个解题思路:优先队列的模板题#include<cstdio>#include<queue>using namespace std;struct Item { int QNum, Period, Time; bool operator < (co原创 2015-03-22 21:15:17 · 487 阅读 · 0 评论 -
UVA - 11995 I Can Guess the Data Structure! STL模板
题目大意:有n个操作,操作x y x为1时表示放入1个数y x为2时表示取出一个数并判断取出的数是否为y 完成n次操作后,要求判断这是什么数据结构解题思路:用STL模板,记得判断是否为空#include<cstdio>#include<cstring>#include<queue>#include<stack>using namespace std;int n;void solve(原创 2015-03-22 20:28:36 · 502 阅读 · 0 评论 -
UVA - 11997 K Smallest Sums 归并排序+优先队列
题目大意:有k个数组,每个数组选出一个数相加,相加后结果放到一个新的数组里,这样就这个数组就有k^k个数了,输出这个新的数组 最小的k个数解题思路:k^k,这样就不能暴力了,用归并排序这里说一下简单化的同类型问题问题为:假设有两个数量为n的数组,A和B,每个数组选出一个数相加并组成一个新的数组,输出这个新的数组的前n个最小值 先排序,然后暴力写出一下所有情况 A0 + B0 <= A0 + B1原创 2015-03-23 20:48:39 · 596 阅读 · 0 评论 -
UVA - 101 The Blocks Problem vector
题目大意:有n堆木块,编号为0— n-1,现在给出4种操作 mova a onto b:把a和b上面木块全部归位,再把a放到b的上面 move a over b:把a上面的木块全部归位,再把a放到b木块所在堆的顶部 pile a onto b:把b上面的木块全部归位,再把a及a上面的木块放到b上面 pile a over b:把a及上面的木块全部放到b所在木块堆的顶部#include原创 2015-03-31 20:29:48 · 570 阅读 · 0 评论 -
UVA - 136 Ugly Numbers set+优先队列
题目大意:丑数的含义是:不能被2,3,5以外的素数整出,现在要求你输出第1500个丑数解题思路:有优先队列存放丑数,每次取出一个丑数,依次乘上2,3,5,因为是丑数,所以乘上了2,3,5后,依然是丑数,因为它的因子都是都2,3,5组成的.然后再用set判重#include<cstdio>#include<queue>#include<set>#include<vector>using nam原创 2015-03-31 20:24:02 · 529 阅读 · 0 评论 -
UVA - 230 Borrowers string+vector
题目大意:给出n本书,每本书都有相应的title和author,先按照author的大小排序,然后按title的大小排序 现在给出三种操作 BORROW title:借出书名为tile的书 RETURN title:还书,书名为title SHELVE:把归还的书放回书架,并输出title和放的位置解题思路:用一个结构体纪录每本书的状态,然后用一个动态数组存储书,具体看代码,对string这原创 2015-04-10 20:42:11 · 1036 阅读 · 0 评论 -
UVA - 1595 Symmetry set
题目大意:给出N个点,要求你找出一条竖直的对称轴,使得对称轴两遍的点关于该轴对称解题思路:对称轴就是所有点的横坐标的平均数,再通过set找到对称的那点是否存在即可#include<cstdio>#include<algorithm>#include<set>using namespace std;typedef pair<int,int> Pair;#define maxn 1010st原创 2015-04-10 18:07:07 · 639 阅读 · 0 评论 -
UVA - 12100 Printer Queue 数组
题目大意:有N个任务,如果当前这个任务后面有其他的任务比当前任务的优先级大的话,就把当前这个任务调到最后面,每次执行一个任务需要1分钟,现在问什么时候任务m可以执行完解题思路:用数组模拟,一直遍历找最大值进行执行,直到任务m执行#include<cstdio>#define maxn 105int q[maxn * maxn], n, m;int ans() { int front =原创 2015-04-10 18:10:40 · 496 阅读 · 0 评论 -
UVALive - 3942 Remember the Word Trie
题目大意:给出一个有S个不同单词组成的字典和一个长字符串,把这个字符串分解成若干个单词的连接,有多少种方法解题思路:设有一个数组dp,dp[i]表示S的前i个单词有多少种组法,dp[j] = dp[i] + dp[j] ,这个前提是有一个单词刚好是由S的第i个到j个字符组成的#include<cstdio>#include<cstring>#define maxn 400010#define原创 2015-04-03 19:25:44 · 555 阅读 · 0 评论 -
UVA - 11136 Hoax or what (multiset)
题目大意:有一个活动持续n天,每天把k张纸条放入纸箱中,并从这纸箱中选出最大值max和最小值min,记录这两个值的差,最后统计一下这n天种max-min的和解题思路:具体思路看代码,最后输出要用long long,不然会WA#include<cstdio>#include<algorithm>#include<set>using namespace std;int main() { i原创 2015-03-28 10:52:52 · 567 阅读 · 0 评论 -
UVALive - 3977 Summits (BFS染色)
题目大意:坑爹的题目,题意那么难理解。 讲的就是,如果该点是山顶的话(高度为h),那么以该点为中心,往外辐射,走高度大于h-d的点,到达不了另一个比它高的点 这就提示了,高度要从大到小排序,依次以高的点(假设高度为h)为核心辐射,如果碰上高度小于等于h-d的,表示此路不通了,就在该处停止 反之,如果碰上高度大于h-d的,且没有被染色过的,那么就将其染色 如果碰上高度大于h-d的,且被染色的话原创 2015-08-10 13:45:07 · 807 阅读 · 0 评论