![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM-数据结构
3stone_
别想了,动手吧
展开
-
拓扑排序--九度1448
题目:http://ac.jobdu.com/problem.php?pid=1448注解:自己用数组实现的,没有用vector,有点笨吧!#include<cstdio>using namespace std;int inCount[110];//记录入度struct relation { //边 int x, y; //左右端点 bool exsit;}rt[110];int原创 2017-02-28 14:34:40 · 209 阅读 · 0 评论 -
链表应用--PAT.1052. Linked List Sorting
/**********************3stone***************************Problem: PAT.1052. Linked List Sorting (25) Author:3stoneTime:2017/3/6 思路:【order:记录点的序号】 1、根据地址遍历链表给order属性赋值,后按order排序 2、再单独对有效结点的值排序 3、注原创 2017-03-06 15:07:09 · 260 阅读 · 0 评论 -
【ACM】PAT. A1097 Deduplication on a Linked List【链表】
/**********************3stone***************************Problem: PAT.1097. Deduplication on a Linked List (25) Author:3stoneTime:2017/3/6 思路:【order:记录点的序号】 0、遍历链表,给order赋值 1、用map<int, bool>记录这个值原创 2017-03-06 16:31:02 · 433 阅读 · 1 评论 -
最小生成树--九度1144[Kruskal]
【2017/2/25】 题目:http://ac.jobdu.com/problem.php?pid=1144思路:题目本身就是Kruskal算法找最小生成树,没什么难度;重点在于数据的转化处理。需要把原始的坐标信息,转化为点的编号。#include<cstdio>#include<algorithm>#include<cmath>#define maxSize 10005using na原创 2017-02-25 18:08:19 · 205 阅读 · 0 评论 -
最小生成树--九度1017[Kruskal]
【2017/2/25】【还是畅通工程】很简单的题目,克鲁斯卡尔标准步骤!#include<cstdio>#include<algorithm>#define maxSize 10005using namespace std;struct Road { int a, b; int len;}road[maxSize];int tree[105];bool cmp(Road A原创 2017-02-25 16:49:44 · 211 阅读 · 0 评论 -
最短路径--九度1447[Floyd & Dijkstra]
题目:http://ac.jobdu.com/problem.php?pid=1447#include<cstdio>using namespace std;int ans[110][110];int main() { int n, m, a, b, c; while (scanf("%d%d", &n, &m) != EOF) { if (0 == n && 0原创 2017-02-28 00:45:50 · 240 阅读 · 0 评论 -
最短路径--九度1162.I Wanna Go Home
【2017/3/10】 思路: 法1、本来想法是用一个变量记录flag记录是否跨入了阵营2,若是则令flag = 1,从而不能再回阵营1;样例实现没问题,但通不过测试法2、把跨阵营的道路设为单向通行,即只能从阵营1走向阵营2/*最短路径问题要求:【路线最多只能有一条路连接两个不同阵营】 start = 1, end = 2 ,且城市1总是阵营1,城市2总是阵营2 */ #include原创 2017-03-10 21:05:39 · 176 阅读 · 0 评论 -
拓扑排序--九度1450.产生冠军
【2017/3/10】 注意:要有冠军,初始时入度为0的点只能有一个/******************3stone*****************************FileName: 九度1450.产生冠军 Author:3stoneTime:2017/3/10*****************3stone*****************************/#incl原创 2017-03-11 02:38:03 · 457 阅读 · 0 评论 -
【ACM】HDU.2545 树上战争 【树】
题目链接题目分析: 注意: 1:不是二叉树 2:结点的移动指 移动到父节点不能模拟结点移动(超时);需要结合树的特性,结点向上移动的过程中,总会相遇,所以计算距根节点的距离即可!小者胜出。解题过程:这道题做得真是一波三折啊! 一开始的思路是模拟结点的移动,每移动一步检查一下: 建树结构体,用map<key, tree> ,超时; 后发...原创 2018-06-11 18:26:28 · 281 阅读 · 0 评论 -
【ACM】HDU.1272 小希的迷宫【并查集】
题目链接题目分析:解题思路(一):解题思路(二):题目链接题目分析:1、结点序号不是严格按顺序排列的! 2、有空树的情况(即只输入: 0 0),不判断会WA解题思路(一):判断是否 只有一个集合 且 没有回路(路径条数 &gt;= 节点数)AC程序(C++):/***************************@...原创 2018-06-13 10:45:11 · 202 阅读 · 0 评论 -
【ACM】HDU.2094 产生冠军 【STL-map】
题目链接问题分析:题意: rule1:胜负关系具有传递性 rule2:胜负关系形成闭环时,则闭环内的都不可能是冠军所以大胆猜测,只要输过一次的人就不可能是冠军,统计最后没有输过的人数,若为1,则就是冠军,否则不能产生冠军!可以AC。程序说明:使用map&amp;amp;lt;string, bool&amp;amp;gt; 边输入边记录胜负属性,最后再用迭代器扫描一遍即可。复杂度:只是整体扫描...原创 2018-06-10 18:15:17 · 291 阅读 · 0 评论 -
【ACM】PAT. A1056 Mice and Rice 【队列】
题目链接题目分析line2:Mice 重量 (输入顺序即为Mice的编号) line3:参加比赛的Mice顺序解题思路两个数组,分别记录Mice重量,和Mice游戏的序号player[]: 记录line2给出的 Mice的重量 playing_order[]: 记录lin3给出的游戏序号,并在每一轮更新1、每次筛选时用player 的下标数组playing_or...原创 2018-07-20 17:12:12 · 184 阅读 · 0 评论 -
【ACM】PAT. A1032 Sharing 【链表】
题目链接题目分析解题思路思路(一): 寻找被指向过两次的那个结点即可 无法解决有无效结点的问题。有一个测试点答案错误。 思路(二): 把两个链表都扫描一遍即可!AC程序(C++)(思路二)/***************************@Author: 3stone*@ACM: PAT. A1032 Sharing*@Time: 18/7/16...原创 2018-07-20 20:06:50 · 222 阅读 · 0 评论 -
【ACM】PAT. A1074 Reversing Linked List【静态链表】
/**********************3stone***************************Problem: PAT.B1025 & A1074. Reversing Linked List (25)Author:3stoneTime:2017/3/6 思路: 1、增加order属性表示点在链表中的位置 【全部初始化为maxSize,之后没有被更新的即为无效点】原创 2017-03-06 11:15:57 · 270 阅读 · 0 评论 -
最短路径--九度1008.[Dijkstra]
题目:http://ac.jobdu.com/problem.php?pid=1008本题要求是要在最短路径长度相同的情况下,选择花费小的方案,但其实是没有这样的测试点的;九度还是有点弱哪!!【纠结】:为什么在选最小边时不用考虑花费因素呢?#include<cstdio>using namespace std;int edges[1010][1010]; //边长int cost[1010][1原创 2017-02-28 10:26:35 · 229 阅读 · 0 评论 -
拓扑排序--九度.1449.[优先级队列实现小顶堆]
题目:http://ac.jobdu.com/problem.php?pid=1449思路: 题目要求输出排名实际就是输出拓扑序列,使用vector和queue并不难实现; 主要是其要求在有多个序列满足时,仅输出号码排列最小的那个;想到的解决办法是用 priority_queue实现小顶堆 保存入度为0的结点,这样每次出队列的都是其中号码最小的,当有多个拓扑序列时,自然满足。#include<原创 2017-02-28 20:47:41 · 412 阅读 · 0 评论 -
栈的应用--九度1153.括号匹配问题
题意:http://ac.jobdu.com/problem.php?pid=1153#include<cstdio>#include<cstring>#include<stack>#define maxSize 110using namespace std;int main() { char str[maxSize]; char re[maxSize]; while原创 2017-02-21 11:41:09 · 665 阅读 · 0 评论 -
二叉树--九度.1009.[二叉排序树]
题目:http://ac.jobdu.com/problem.php?pid=1009/**************************************************FileName: 九度1009.二叉搜索树Author:3stoneTime:2017/2/25题意:判断两序列是否为同一二叉搜索树序列**********************************原创 2017-03-01 21:31:21 · 159 阅读 · 0 评论 -
二叉树--九度.1201.[二叉排序树]
/***************************************************FileName: 九度1201.二叉排序树Author:3stoneTime:2017/2/25题意:建立二叉排序树,并进行前中后序遍历输出*************************************************** */#include<cstdio>#原创 2017-03-01 21:34:05 · 315 阅读 · 0 评论 -
哈夫曼树--九度 1172 & 1107 [优先队列实现小顶堆]
题目:http://ac.jobdu.com/problem.php?pid=1172哈夫曼树的最小权值 = sum(叶节点权值 * 路径长度)思路: 1、把候选节点放入队列中; 2、每次取出两个最小点,合并后把父节点再投入堆中 3、重复步骤2,直到队列中只有一个结点,即为根节点实现方式: 中间结点【即非叶节点】的权值 累加求和 即可!【忘了如何证明的话画个草图很容易就看出来了】#includ原创 2017-02-25 09:38:58 · 959 阅读 · 0 评论 -
【ACM】九度.1444【并查集】
题目:http://ac.jobdu.com/problem.php?pid=1444题意:查找最大的集合,输出集合中的元素个数思路: 用一个额外数组group[ i ] 记录以结点 i 为根节点的集合所含元素数,合并集合时累加。 注意的一点是:单点是单元素集合,初始化为1,而非0!#include<cstdio>#define maxSize 10000001using namespace原创 2017-02-25 15:54:22 · 250 阅读 · 0 评论 -
栈的应用--九度1019.简单计算器【神】
转载自:http://www.xuebuyuan.com/1980063.html#include "stdio.h"#include "string.h"#define MAX 1001//格式化读入double stack[MAX]; //保存运算符int tail;int main() { int a; while (scanf("%d ", &a) && a != 0原创 2017-02-21 20:51:09 · 279 阅读 · 0 评论 -
【ACM】九度1012 & 1109 【并查集】
题目:http://ac.jobdu.com/problem.php?pid=1012思路:类似于kruskal算法对数据进行预处理,分成不同集合,集合个数减一就是答案感悟:寻找根节点时,进行了路径压缩,即在查找过程中,路径上所有点的父节点都重新赋值,直接指向根节点;这样有效降低搜索树的高度,提高了效率#include<cstdio>#define maxSize 1005using names原创 2017-02-25 11:57:10 · 272 阅读 · 0 评论 -
最小生成树--九度1154[Kruskal]
题目[jungle Roads]: http://ac.jobdu.com/problem.php?pid=1154思路:没什么特别,就是简单的kruskal算法实现,重点在数据的处理转换。疑惑:实现的时候要读入单个字符,使用scanf(“%c”)总是出错,最后想到的解决办法是按字符串读入,再取其0位字符。 应该有正规的格式,暂时还没搜到!#include<cstdio>#include<algo原创 2017-02-25 20:20:14 · 479 阅读 · 0 评论 -
【ACM】PAT.A1107 Social Clusters【并查集】
【2017/2/26】 【还有三个测试点不过!!!】#include<cstdio>#include<algorithm>#include<cmath>#define maxSize 1010using namespace std;/*PAT.A1107.social cluster题意:N个人,每人有不同的爱好,统计有同类爱好的人,并输出人数人数[1,1000] 爱好类型[1,原创 2017-02-26 10:21:08 · 426 阅读 · 0 评论 -
【ACM】- PAT. A1099 Build a Binary Search Tree 【BST】
PAT.A1099.Build a Binary Search TreeBST原创 2017-03-08 16:37:22 · 258 阅读 · 0 评论 -
二叉树--九度1078. [前序+中序 -> 后序]
【2017/2/26 | 一次性完成,好有成就感!坚持总有回报!】题目:http://ac.jobdu.com/problem.php?pid=1078题意:给出二叉树的前序和中序遍历结果,输出后序遍历结果#include<cstdio>#include<cstring>#include<algorithm>#define maxSize 30using namespace std原创 2017-02-26 15:56:07 · 169 阅读 · 0 评论 -
【ACM】PAT A1052 Linked List Sorting 【链表】
题目链接题目分析输入中含有无效结点,只需对有效结点操作即可解题思路1、对于无效结点:结构体中设置属性flag,表示是否在链表中 2、有效结点按key值进行结构体排序即可(也可把有效结点摘取出来,存储在另一个数组,有效结点较少的情况这样排序更快)AC程序(C++)/***************************@Author: 3stone*...原创 2018-07-20 20:19:42 · 194 阅读 · 0 评论