SWUST OJ
SWUST OJ
Fiveneves
这个作者很懒,什么都没留下…
展开
-
SWUST OJ 1011: 二叉排序树的实现和查找
1011: 二叉排序树的实现和查找题目链接-1011: 二叉排序树的实现和查找解题思路二叉排序树:一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树; (4)没有键值相等的结点建树时我们采用插入建树的原创 2020-06-02 05:04:52 · 1581 阅读 · 1 评论 -
SWUST OJ 1067: 有向图的邻接表存储强连通判断
1067: 有向图的邻接表存储强连通判断题目链接-1067: 有向图的邻接表存储强连通判断解题思路floyd思想floyd思想floyd思想若iii和kkk且kkk和jjj之间联通,那么iii和jjj之间也必定联通,可以floydfloydfloyd三重循环暴力处理,a[u][v]的值为111或000,表示uuu和vvv之间是否连通具体操作见代码附上代码#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits原创 2020-06-02 04:39:07 · 1203 阅读 · 0 评论 -
SWUST OJ 1105: 交换二叉树的孩子结点
1105: 交换二叉树的孩子结点题目链接-1105: 交换二叉树的孩子结点解题思路先序建树,中序和先序输出的时候把左节点当成右节点,右节点当成左节点即可(先右后左),不用再写一个交换左右节点的函数具体操作见代码附上代码#include<bits/stdc++.h>#define lowbit(x) (x &(-x))#define endl '\n'using namespace std;const int INF=0x3f3f3f3f;const int d原创 2020-06-01 23:05:10 · 1052 阅读 · 0 评论 -
SWUST OJ 987: 输出用先序遍历创建的二叉树是否为完全二叉树的判定结果
987: 输出用先序遍历创建的二叉树是否为完全二叉树的判定结果题目链接-987: 输出用先序遍历创建的二叉树是否为完全二叉树的判定结果解题思路完全二叉树的特点:叶子结点只能出现在最下层和次下层,且最下层的叶子结点集中在树的左部。如果树为空,则直接输出Y,否则层序遍历二叉树进行判断如果一个结点左右孩子都不为空,将其左右孩子入队列如果遇到一个结点,左孩子不存在,右孩子不存在,则该树一定不是完全二叉树如果它的左孩子存在,右孩子不存在,就做个标记,若这个左孩子有后代则不是完全二叉树若直至队列为空原创 2020-06-01 22:46:11 · 1523 阅读 · 0 评论 -
SWUST OJ 1053: 输出利用先序遍历创建的二叉树中的指定结点的度
1053: 输出利用先序遍历创建的二叉树中的指定结点的度题目链接-1053: 输出利用先序遍历创建的二叉树中的指定结点的度解题思路先序递归建树,然后递归搜索指定结点然后判断该节点的左右孩子个数,即判断左右子树是否为空具体操作见代码附上代码#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long long#define lowbit(x) (x &a原创 2020-06-01 17:54:33 · 788 阅读 · 0 评论 -
NOIP2004 提高组 合并果子
NOIP2004 提高组 合并果子acwing题目链接-合并果子SWUST OJ题目链接-合并果子在一个果园里,达达已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。达达决定把所有的果子合成一堆。每一次合并,达达可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n−1n-1n−1次合并之后,就只剩下一堆了。达达在合并果子时总共消耗的体力等...原创 2020-04-07 16:39:02 · 237 阅读 · 0 评论 -
Satellite Photographs(USACO 2005 November Bronze)
Satellite Photographs题目链接-POJ 3051.Satellite Photographs题目链接-SWUST OJ 0001.Satellite Photographs DescriptionFarmer John purchased satellite photos of W x H pixels of his farm (1 <= W <= 80, ...原创 2020-02-27 11:15:28 · 748 阅读 · 0 评论 -
SWUST OJ 1076: 判断给定有向图是否存在回路
1076: 判断给定有向图是否存在回路题目链接-1076: 判断给定有向图是否存在回路解题思路拓扑排序拓扑排序拓扑排序先统计所有节点的入度,对于入度为0的节点就可以分离出来,即将所有入度为0的顶点放入队列然后把这个节点指向的节点的入度减1,直到所有的节点都被分离出来如果最后不存在入度为0的节点,那就说明有环(即回路),不存在拓扑序列伪代码:附上代码//#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bi原创 2020-05-19 11:22:48 · 1936 阅读 · 0 评论 -
SWUST OJ 1065: 无向图的连通分量计算
1065: 无向图的连通分量计算题目链接-1065: 无向图的连通分量计算解题思路并查集或dfs并查集或dfs并查集或dfs并查集并查集并查集:将能相互连通的点的集合赋予一个共同的父亲(即合并),然后统计父亲的个数就行了dfsdfsdfs:循环找没有被标记过的点,然后对该点进行深搜,一次深搜能访问该节点所有能访问的边,统计有几次dfsdfsdfs就能知道有几个连通分量了(与dfsdfsdfs求连通块一个思路)附上代码并查集并查集并查集#pragma GCC optimize("-Ofa原创 2020-05-19 10:31:27 · 1051 阅读 · 0 评论 -
SWUST OJ 1098: 堆的判断
1098: 堆的判断题目链接-1098: 堆的判断解题思路小根堆:小根堆是一个特殊的二叉树,他的父亲节点都不大于两个儿子节点,且他的左右子树也是小根堆如果有一个关键字的集合K=k1,k2,...,knK={k_1,k_2, ..., k_n}K=k1,k2,...,kn, 把所有元素按完全二叉树的顺序存储方式存放在一个一维数组中,并且满足ki<=k2i+1k_i<=k_{2i+1}ki<=k2i+1且ki<=k2ik_i<=k_{2i}ki<=k2原创 2020-05-16 01:22:52 · 1121 阅读 · 0 评论 -
SWUST OJ 1077: 平衡二叉树的判定
1077: 平衡二叉树的判定题目链接-1077: 平衡二叉树的判定解题思路平衡二叉树:是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树我们先根据先序序列建树,然后判断任意一个节点的左右子树高度差的绝对值是否不超过1左右子树的最大高度再加1便是父节点的高度,我们可以递归求解树的高度具体操作见代码附上代码#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc+原创 2020-05-16 01:02:52 · 1884 阅读 · 0 评论 -
SWUST OJ 981: 统计利用二叉树存储的森林中树的棵数
981: 统计利用二叉树存储的森林中树的棵数题目链接-981: 统计利用二叉树存储的森林中树的棵数题目描述普通树及其构成的森林均可转换成相应的二叉树,反之亦然。故而可以根据相应的转换方法去统计某一二叉树对应的森林中树的棵数。相应的二叉树可利用先序递归遍历算法创建。先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数据决定是否产生该结点从而实现创建...原创 2020-04-01 17:58:20 · 1389 阅读 · 0 评论 -
SWUST OJ 982: 输出利用二叉树存储的普通树的度
982: 输出利用二叉树存储的普通树的度题目链接-982: 输出利用二叉树存储的普通树的度题目描述普通树可转换成相应的二叉树(该二叉树的根结点一定缺少右儿子),反之亦然。故而可以根据相应的转换方法去统计某一二叉树对应的普通树的度。普通树的度为其结点儿子数的最大值。相应的二叉树可利用二叉树的先序递归遍历算法创建。先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体...原创 2020-04-01 16:18:54 · 1138 阅读 · 2 评论 -
SWUST OJ 1043: 利用栈完成后缀表达式的计算
1043: 利用栈完成后缀表达式的计算题目链接-1043: 利用栈完成后缀表达式的计算解题思路附上代码#include<bits/stdc++.h>#define int long long#define lowbit(x) (x &(-x))using namespace std;const int INF=0x3f3f3f3f;const double ...原创 2020-03-03 21:45:32 · 1537 阅读 · 0 评论 -
SWUST OJ 1042: 中缀表达式转换为后缀表达式
1042: 中缀表达式转换为后缀表达式题目链接-1042: 中缀表达式转换为后缀表达式解题思路附上代码#include<bits/stdc++.h>#define int long long#define lowbit(x) (x &(-x))using namespace std;const int INF=0x3f3f3f3f;const double ...原创 2020-03-03 22:06:16 · 2608 阅读 · 0 评论 -
SWUST OJ 956: 约瑟夫问题的实现
956: 约瑟夫问题的实现题目链接-956: 约瑟夫问题的实现题目描述n个人围成一个圈,每个人分别标注为1、2、…、n,要求从1号从1开始报数,报到k的人出圈,接着下一个人又从1开始报数,如此循环,直到只剩最后一个人时,该人即为胜利者。例如当n=10,k=4时,依次出列的人分别为4、8、2、7、3、10,9、1、6、5,则5号位置的人为胜利者。给定n个人,请你编程计算出最后胜利者标号数。(要...原创 2020-02-27 19:39:46 · 1384 阅读 · 0 评论 -
SWUST OJ 1027.舞伴问题
1027. 舞伴问题题目链接-1027. 舞伴问题解题思路用STL里面的queue实现出队跳舞和跳完舞归队两个过程循环即可附上代码#include<bits/stdc++.h>#define int long long#define lowbit(x) (x &(-x))using namespace std;const int INF=0x3f3f3f3f...原创 2020-02-27 14:55:48 · 1579 阅读 · 0 评论 -
SWUST OJ 964: 数细胞
964.数细胞题目链接-964.数细胞题目描述一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。输入第一行输入两个整数,分别代表矩阵的行和列 输入m*n的矩阵,由数字0到9组成输出细胞个数样例输入4 101 2 3 4 5 1 1 1 6 7 1 0 3 4 5 6 1 5 1 02 0 4 5...原创 2020-02-27 12:30:04 · 3183 阅读 · 0 评论