
天梯赛
Joker__Wa
这个作者很懒,什么都没留下…
展开
-
天梯赛练习——是否完全二叉搜索树 (30分)
题目: 分析: 使用递归建立二叉搜索树,在建树完成之后,使用队列层次遍历该树,定义一个标志 pp,对于每一个结点,如果该节点的左子树为空但是右子树不为空的情况,这说明该树不是完全二叉树,将 pp 置为true,这样就可以判否是完全二叉树 代码: #include <iostream> #include <cstring> #include <cstdio> #...原创 2020-04-21 18:32:34 · 243 阅读 · 0 评论 -
天梯赛练习——Favorite Color Stripe (30分)(最长上升子序列)
题目: 分析: 对于输入的n种颜色,将输入的颜色从1开始依次编号,在输入长度为L的序列时,将其转换为对应的颜色下标编号,那么问题就会转换为最长上升子序列的问题 对于长度为L的序列,求最长上升子序列,容易得知,在长度相同的最长子序列的情况下,最后一个的数越小,这个序列在最后可能形成的序列就越长,依据这个性质我们就可以求出最长的子序列 代码: #include <iostream> #i...原创 2020-04-18 20:04:43 · 173 阅读 · 0 评论 -
天梯赛练习——Build A Binary Search Tree (30分)(搜索树)
题目: 分析: 递归求解搜索树 代码: #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #include <queue> using namespace std; const int MAXN = 105; int num[M...原创 2020-04-18 18:14:46 · 197 阅读 · 0 评论 -
天梯赛——Review of Programming Contest Rules (30分)(DFS)
题目: 代码: #include <iostream> #include <cstring> #include <cstdio> using namespace std; int num[12],solve[12],d[12],ans[12]; char str[12][25]; bool vis[12]; int h,n,t0,minn,minTim; ...原创 2020-04-17 20:20:27 · 503 阅读 · 0 评论 -
天梯赛练习——公路村村通 (30分)
题目: 分析: 使用最小生成树算法解决,下面是分别使用了Kruskal算法和Prime算法: 代码: Kruskal #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; const int MAXN =...原创 2020-04-16 16:42:13 · 210 阅读 · 0 评论 -
天梯赛练习——Complete Binary Search Tree (30分)
题目: 分析: 本题涉及到 完全二叉树 二叉搜索树,对于给出的数据,只要经过排序之后则一定为二叉搜索树中序遍历的结果,由于题目要求的是构造完全二叉树,所以对于下标为 x 的节点,左孩子一定为 2x , 右孩子一定为 2x+1,则使用递归建树即可 代码: #include <iostream> #include <cstring> #include <cstdio&g...原创 2020-04-15 19:59:53 · 268 阅读 · 0 评论 -
天梯赛练习——最长对称子串 (25分)
题目: 分析: 这道题借鉴了这位大佬的题解,通过题目可知找对称字符串,对称的字符串又满足回文串的性质,也就是说该字符串倒转之后仍为他本身,可以通过一个二重循环,倒转每一个可能的字符串,看该字符串是否满足回文串的性质,如果满足,找出这些字符串中最长的即可。 代码: #include <iostream> #include <cstring> #include <cst...原创 2020-04-05 15:48:11 · 303 阅读 · 0 评论 -
天梯赛练习——树的遍历 (25分)
题目: 代码: #include <iostream> #include <cstring> #include <cstdio> #include <queue> using namespace std; const int MAXN = 35; int n; int mid[MAXN],last[MAXN],ans[MAXN]; typede...原创 2020-04-04 15:32:16 · 306 阅读 · 0 评论 -
天梯赛练习——7-41 集合相似度 (25分)(set集合)
题目: 分析: 此题使用set来做,对于每一个输入的元素,将其插入到所属的set集合中,因为set保证了元素的不重复性,所以最后两个集合一共有的不相等整数的个数等于:集合1的元素个数 + 集合2的元素个数 - 两个集合共有的元素个数。两个集合共有的元素的查找:遍历一个集合中的每个元素,使用 find 方法查找另一个集合中是否存在此元素。最后相除即可得出答案。 代码: #include <i...原创 2020-04-04 14:53:55 · 490 阅读 · 0 评论 -
天梯赛练习——7-40 愿天下有情人都是失散多年的兄妹 (25分)(DFS)
题目: 输入输出样例: 代码: #include <iostream> #include <cstring> #include <cstdio> using namespace std; const int MAXN = 1e4+5; int n,m; bool flag,vis[100005]; struct node { char sex; ...原创 2020-04-03 20:08:27 · 836 阅读 · 0 评论 -
天梯赛练习——7-37 红色警报 (25分)(并查集)
题目: 分析: 该题使用并查集来解决,通过判断去除 某一个城市 之前和之后的连通性得出是否要发出警报 每一次攻占某一个城市之前,求出根节点的个数ans,攻占城市之后,标记该城市,然后对未标记的城市做一遍并查集,判断此时的根节点一共有cnt个,如果 cnt 等于 ans ,说明此时破坏的城市并没有使连通性发生变化,如果cnt <ans说明,此时破坏的城市为孤立城市,也不会发出警报,在cnt ...原创 2020-04-02 17:44:18 · 342 阅读 · 0 评论 -
天梯赛练习——7-31 PAT排名汇总 (25分)(排序)
题目: 分析: 就是反复使用sort()进行排序,不过在这里含有相同名次下的输出,可以设置一个v和maxx来输出相同的名次,具体的操作下述代码中已给出 代码: #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #define INF 0x3f3...原创 2020-04-01 11:19:19 · 905 阅读 · 0 评论 -
7-21 Hashing (25分)(平方探查法)
题目: 分析: num[i]用于存放数值 首先要判断输入的初始m是否为素数,如果不是素数,需要将m增加到素数 确定了m之后,判断pos = num[i] % m这个位置在hashTable中是否已经被访问了,如果vis[pos]为false,说明此位置未被访问直接输出即可,如果为true,说明此位置已经被访问了,之后运用平方探查法找合适的位置,具体的做法是 nexPos = (pos + j*...原创 2020-03-29 18:14:38 · 334 阅读 · 0 评论 -
7-20 Sort with Swap(0, i) (25分)
题目 分析: 能够发现序列是由几个环组成,每个环内的元素排好序就可以使得环内元素在正确的位置上,走一遍样例就可以发现,一个环内的元素相互交换最少需要元素数-1次操作就可以排好序,由于只能和0交换,如果这个环包括0,那就需要交换元素数-1次,否则的话,需要把0交换进环,再交换出去,需要交换元素数-1+2次即元素数+1。如果一个元素本来就在正确位置那就不用交换。 代码: #include <s...转载 2020-03-29 17:34:08 · 189 阅读 · 0 评论 -
天梯赛练习——7-17 Insert or Merge (25分)(归并+插入)
题目: 代码: #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> using namespace std; const int MAXN = 105; int num[MAXN],tmp[MAXN],val[MAXN]; int n; bo...原创 2020-03-28 16:16:16 · 158 阅读 · 0 评论 -
天梯赛练习——7-15 How Long Does It Take (25分)(关键路径+拓扑排序)
题目: 分析: 使用拓扑排序判断是否能够完成工程(即判断是否存在环),如果能够完成工程,要求出完成工程需要的最长时间,值得注意的是,最长时间并不一定是 n-1 这个点,可能是 0~n-1中的任何一个点,所以最后还需要一次循环找出最长的时间。 代码: #include <iostream> #include <cstring> #include <cstdio>...原创 2020-03-27 20:31:20 · 232 阅读 · 0 评论 -
天梯赛练习——7-6 Tree Traversals Again (25分)(前序+中序->后序)
题目: 分析: 从题目分析可知,入栈的顺序即为树的前序遍历,出栈的顺序即为树的中序遍历,分别使用数组pre,mid存储前序和后序遍历的结果,随后根据前序和后序的遍历结果即可求出后序遍历 代码: #include <iostream> #include <cstring> #include <cstdio> #include <stack> #inc...原创 2020-03-25 10:23:52 · 165 阅读 · 0 评论 -
天梯赛练习——7-3 Pop Sequence (25分)
题目: 分析: 输入一行长度为 n 的数字之后,分别对应着num[1] , num[2] , num[3] , … , num[n],从 num[1] 开始遍历 , 如果当前栈中的元素为空 或者 栈顶的元素不等于num[1],那么就从 1 开始入栈(题目要求从1开始顺序入栈),如果入栈之后 栈中元素大于 m,说明此时栈已经溢出,则直接跳出循环,如果当前栈顶的元素等于num[1],那么就将当前的栈...原创 2020-03-24 17:05:14 · 443 阅读 · 0 评论 -
天梯赛练习——7-2 Reversing Linked List (25分)
题目: 分析: 首先,看明白要求,题目要求的是:每 k 个元素进行逆转,也就是说如果 k < n/2的话需要逆转多次。 其次,题目中可能出现多条链,只需要输出需要的链即可 下面的代码中应用了 algorithm 库中的 reverse 函数,用于逆转元素,详情代码如下: 代码: #include <iostream> #include <cstring> #incl...原创 2020-03-24 14:42:35 · 339 阅读 · 1 评论