数据结构
小耿要努力变强!
neuqacmer
展开
-
AcWing 827. 双链表
#include<iostream>using namespace std;const int N = 1e5 + 10;int m;int e[N], l[N], r[N];int idx;//! 初始化void init(){ l[1] = 0, r[0] = 1;//* 初始化 第一个点的右边是 1 第二个点的左边是 0 idx = 2;//! idx 此时已经用掉两个点了}//* 在第 K 个点右边插入一个 X void add(in原创 2021-07-13 15:04:05 · 97 阅读 · 0 评论 -
PTA-网红点打卡攻略 (20 分)
网红点打卡攻略 (20 分)7-5 网红点打卡攻略 (20 分)一个旅游景点,如果被带火了的话,就被称为“网红点”。大家来网红点游玩,俗称“打卡”。在各个网红点打卡的快(省)乐(钱)方法称为“攻略”。你的任务就是从一大堆攻略中,找出那个能在每个网红点打卡仅一次、并且路上花费最少的攻略。输入格式:首先第一行给出两个正整数:网红点的个数 N(1<N≤200)和网红点之间通路的条数 M。随后 M行,每行给出有通路的两个网红点、以及这条路上的旅行花费(为正整数),格式为“网红点1 网红点2 费用”原创 2021-02-07 00:42:01 · 1619 阅读 · 0 评论 -
PTA-汉密尔顿回路 (20 分)
汉密尔顿回路 (20 分)著名的“汉密尔顿(Hamilton)回路问题”是要找一个能遍历图中所有顶点的简单回路(即每个顶点只访问 1次)。本题就要求你判断任一给定的回路是否汉密尔顿回路。输入格式:首先第一行给出两个正整数:无向图中顶点数 N(2<N≤200)和边数 M。随后 M 行,每行给出一条边的两个端点,格式为“顶点1顶点2”,其中顶点从 1 到N 编号。再下一行给出一个正整数 K,是待检验的回路的条数。随后 K 行,每行给出一条待检回路,格式为:n V1 V2 ⋯ V原创 2021-02-07 00:22:24 · 447 阅读 · 0 评论 -
PTA-分而治之
分而治之,各个击破是兵家常用的策略之一。在战争中,我们希望首先攻下敌方的部分城市,使其剩余的城市变成孤立无援,然后再分头各个击破。为此参谋部提供了若干打击方案。本题就请你编写程序,判断每个方案的可行性。输入格式:输入在第一行给出两个正整数 N 和 M(均不超过10 000),分别为敌方城市个数(于是默认城市从 1 到 N编号)和连接两城市的通路条数。随后 M行,每行给出一条通路所连接的两个城市的编号,其间以一个空格分隔。在城市信息之后给出参谋部的系列方案,即一个正整数 K (≤ 100)和随后的.原创 2021-02-06 23:50:29 · 687 阅读 · 0 评论 -
PTA-哥尼斯堡的“七桥问题” (20 分)
哥尼斯堡的“七桥问题” (20 分)哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示。可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(LeonhardEuler,1707—1783)最终解决了这个问题,并由此创立了拓扑学。这个问题如今可以描述为判断欧拉回路是否存在的问题。欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个无向图,问是否存在欧拉回路?输入格式:输入第一行给出两个正整数,分别是节点数N(1≤N≤100原创 2021-02-06 23:24:08 · 1663 阅读 · 0 评论 -
数据结构(浙江大学)第六讲 图(上)
6.1 什么是图图定义:表示多对多的关系包含:一组顶点:通常用V表示顶点集合一组边:通常用E表示边的集合无向边:(v,w)有向边:<v,w>表示从v指向w的边度:每个顶点所拥有的边的个数叫作度怎么在程序中表示一个图?有什么不好?浪费空间 浪费时间方便找任一顶点的所有“临接点”节约空间对于无向图方便计算任一顶点的度对于有向图需要构造“逆临接表”6.2 图的遍历深度优先搜索(DFS)类似于树的先序遍历广度优先搜索(BFS)图不联通怎么办?连通:如果从原创 2021-02-06 23:18:30 · 72 阅读 · 0 评论 -
PTA-朋友圈-文件传输
朋友圈某学校有N个学生,形成M个俱乐部。每个俱乐部里的学生有着一定相似的兴趣爱好,形成一个朋友圈。一个学生可以同时属于若干个不同的俱乐部。根据“我的朋友的朋友也是我的朋友”这个推论可以得出,如果A和B是朋友,且B和C是朋友,则A和C也是朋友。请编写程序计算最大朋友圈中有多少人。输入格式:输入的第一行包含两个正整数N(≤30000)和M(≤1000),分别代表学校的学生总数和俱乐部的个数。后面的M行每行按以下格式给出1个俱乐部的信息,其中学生从1~N编号:第i个俱乐部的人数Mi(空格)学生1(空格)原创 2021-02-03 21:01:19 · 396 阅读 · 0 评论 -
PTA-秀恩爱分得快 (10 分)
秀恩爱分得快 (10 分)古人云:秀恩爱,分得快。互联网上每天都有大量人发布大量照片,我们通过分析这些照片,可以分析人与人之间的亲密度。如果一张照片上出现了 K个人,这些人两两间的亲密度就被定义为1/K。任意两个人如果同时出现在若干张照片里,他们之间的亲密度就是所有这些同框照片对应的亲密度之和。下面给定一批照片,请你分析一对给定的情侣,看看他们分别有没有亲密度更高的异性朋友?输入格式:输入在第一行给出 2 个正整数:N(不超过1000,为总人数——简单起见,我们把所有人从 0 到 N-1编号原创 2021-02-03 17:27:50 · 911 阅读 · 0 评论 -
PTA-关于堆的判断 (10 分)
关于堆的判断 (10 分)将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。命题分下列几种:x is the root:x是根结点;x and y are siblings:x和y是兄弟结点;x is the parent of y:x是y的父结点;x is a child of y:x是y的一个子结点。输入格式:每组测试第1行包含2个正整数N(≤ 1000)和M(≤20),分别是插入元素的个数、以及需要判断的命题数。下一行给出区间[−10000,100原创 2021-02-03 16:26:41 · 812 阅读 · 0 评论 -
二叉树的笔记
二叉树二叉树是每个节点最多拥有两个子节点,左子树和右子树是有顺序的不能任意颠倒。二叉树的遍历前序遍历(前根遍历):根——>左——>右中序遍历(中根遍历):左——>根——>右后序遍历(后根遍历):左——>右——>根我们记忆前、中、后序只要记住根在什么位置就可以了其中前序和中序的子树也满足前序和中序的规则。(记住这个,写代码的时候会跟深入理解这个规则)后序:DGBEHFCA二叉树的深度优先遍历(DFS)与广度优先遍历(BFS)DFS:即前序遍历ABD原创 2021-02-03 00:27:42 · 93 阅读 · 0 评论 -
7-6 根据后序和中序遍历输出先序遍历 (10 分)
7-6 根据后序和中序遍历输出先序遍历 (10 分)本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。输入格式:第一行给出正整数N(≤30),是树中结点的个数。随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。输出格式:在一行中输出Preorder: 以及该树的先序遍历结果。数字间有1个空格,行末不得有多余空格。输入样例:7 2 3 1 5 7 6 4 1 2 3 4 5 6 7输出样例:Preord原创 2021-02-03 00:18:40 · 561 阅读 · 1 评论 -
7-9 完全二叉树的层序遍历 (10 分)
7-9 完全二叉树的层序遍历 (10 分)一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是完全二叉树。给定一棵完全二叉树的后序遍历,请你给出这棵树的层序遍历结果。输入格式:输入在第一行中给出正整数 N(≤30),即树中结点个数。第二行给出后序遍历序列,为 N 个不超过 100的正整数。同一行中所有数字都以空格分隔。输出格式:在一行中输出该树的层序遍历序原创 2021-02-02 23:16:28 · 1661 阅读 · 0 评论 -
7-4 深入虎穴 (7分)
7-4 深入虎穴 (7分)著名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报。已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门。每一扇门背后或者是一个房间,或者又有很多条路,同样是每条路通向一扇门…… 他的手里有一张表格,是其他间谍帮他收集到的情报,他们记下了每扇门的编号,以及这扇门背后的每一条通路所到达的门的编号。007 发现不存在两条路通向同一扇门。内线告诉他,情报就藏在迷宫的最深处。但是这个迷宫太大了,他需要你的帮助 —— 请编程帮他找出距离入口最远的那原创 2021-02-02 16:11:38 · 1463 阅读 · 0 评论 -
7-3 小字辈(左子右兄加强版) (8分)
7-3 小字辈(左子右兄加强版) (8分)本题给定一个庞大家族的家谱,要请你给出最小一辈的名单。 需要注意的是,家族成员的输入方式,是按照“Left-childRight-sibling”(左儿子 右兄弟)的格式【敲黑板】sibling的意思是兄弟/姐妹,是亲兄弟,不是“表兄弟”!2019年春季PAT中不认识单词sibling的孩纸请牢记……注:本题是在浙江大学陈越老师的GPLT-2018决赛L2-2题目“小字辈”题意基础上改编而成。输入格式:输入在第一行给出家族人口总数 N(不超过 100原创 2021-02-02 13:37:36 · 456 阅读 · 1 评论 -
顺序存储的二叉树的最近的公共祖先问题
1-顺序存储的二叉树的最近的公共祖先问题设顺序存储的二叉树中有编号为i和j的两个结点,请设计算法求出它们最近的公共祖先结点的编号和值。输入格式:输入第1行给出正整数n(≤1000),即顺序存储的最大容量;第2行给出n个非负整数,其间以空格分隔。其中0代表二叉树中的空结点(如果第1个结点为0,则代表一棵空树);第3行给出一对结点编号i和j。题目保证输入正确对应一棵二叉树,且1≤i,j≤n。输出格式:如果i或j对应的是空结点,则输出ERROR: T[x] isNULL,其中x是i或j中先发现错误原创 2021-02-02 13:12:10 · 1948 阅读 · 0 评论