![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
Skyed.blue
写写博客,记录足迹
展开
-
【leetcode】分裂二叉树的最大乘积 (树的遍历)
给你一棵二叉树,它的根为 root 。请你删除 1 条边,使二叉树分裂成两棵子树,且它们子树和的乘积尽可能大。由于答案可能会很大,请你将结果对 10^9 + 7 取模后再返回。示例 1:输入:root = [1,2,3,4,5,6]输出:110解释:删除红色的边,得到 2 棵子树,和分别为 11 和 10 。它们的乘积是 110 (11*10)示例 2:输入:root = [1,nu...原创 2020-02-02 16:22:38 · 539 阅读 · 0 评论 -
一个人的旅行(hdu2066) (最短路模板题)
虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,0),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信,去北京探望孟姜女……眼看寒假就快到了,这么一大段时间,可不能浪费啊,一定要给自己好好的放个假,可...原创 2020-01-28 22:06:34 · 369 阅读 · 0 评论 -
【哈夫曼树】构造哈夫曼树(结构体优先队列)
哈夫曼树这里就不介绍了。这里主要是想处理一下自己写构造哈夫曼树时遇到的问题。一开始,我是建了一个存结构体指针的优先队列,以权值为标准从小到大排序,然后选最小和次小节点组成父节点。但是运行后权值的排序是乱的。既不是从小到大也不是从大到小。在找了许多篇博客才终于明白,指针容器是不推荐的。它会有很多问题。但是,我们需要用到优先队列进行O(lgn)的插入,又要存放节点的指针。这该如何操作呢?我们可...原创 2019-11-10 13:49:03 · 735 阅读 · 1 评论 -
【蓝桥杯】发现环(dfs搜环节点)
问题描述 小明的实验室有N台电脑,编号1~N。原本这N台电脑之间有N-1条数据链接相连,恰好构成一个树形网络。在树形网络上,任意两台电脑之间有唯一的路径相连。不过在最近一次维护网络时,管理员误操作使得某两台电脑之间增加了一条数据链接,于是网络中出现了环路。环路上的电脑由于两两之间不再是只有一条路径,使得这些电脑上的数据传输出现了BUG。为了恢复正常传输。小明需要找到所有在环路上的电脑,你能...原创 2019-11-08 17:56:51 · 333 阅读 · 0 评论 -
【PTA】7-14 喊山 (图bfs)
7-14 喊山 (30 分)喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤。呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的。原来它是彝族先民用来求援呼救的“讯号”,慢慢地人们在生活实践中发现了它的实用价值,便把它作为一种交流工具世代传袭使用。(图文摘自:http://news.xrxxw.com/newssho...原创 2019-11-04 16:06:21 · 1744 阅读 · 0 评论 -
看病要排队(优先队列)
看病要排队这个是地球人都知道的常识。不过经过细心的0068的观察,他发现了医院里排队还是有讲究的。0068所去的医院有三个医生(汗,这么少)同时看病。而看病的人病情有轻重,所以不能根据简单的先来先服务的原则。所以医院对每种病情规定了10种不同的优先级。级别为10的优先权最高,级别为1的优先权最低。医生在看病时,则会在他的队伍里面选择一个优先权最高的人进行诊治。如果遇到两个优先权一样的病人的话,则...原创 2019-07-20 16:30:34 · 173 阅读 · 0 评论 -
[蓝桥杯-历届试题] 拉马车 (栈与队列)
问题描述 小的时候,你玩过纸牌游戏吗? 有一种叫做“拉马车”的游戏,规则很简单,却很吸引小朋友。其规则简述如下: 假设参加游戏的小朋友是A和B,游戏开始的时候,他们得到的随机的纸牌序列如下: A方:[K, 8, X, K, A, 2, A, 9, 5, A] B方:[2, 7, K, 5, J, 5, Q, 6, K, 4]其中的X表示“10”,我们忽略了纸牌的花色。从A...原创 2019-07-20 19:06:11 · 645 阅读 · 0 评论 -
7-37 模拟EXCEL排序(改造sort)
7-37 模拟EXCEL排序 (25 分)Excel可以对一组纪录按任意指定列排序。现请编写程序实现类似功能。输入格式:输入的第一行包含两个正整数N(≤105 ) 和C,其中N是纪录的条数,C是指定排序的列号。之后有 N行,每行包含一条学生纪录。每条学生纪录由学号(6位数字,保证没有重复的学号)、姓名(不超过8位且不包含空格的字符串)、成绩([0, 100]内的整数)组成,相邻属性...原创 2019-07-25 15:53:16 · 453 阅读 · 0 评论 -
【PTA】7-29 修理牧场 (哈夫曼树)
7-29 修理牧场 (25 分)农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li个长度单位,于是他购买了一条很长的、能锯成N块的木头,即该木头的长度是Li的总和。但是农夫自己没有锯子,请人锯木的酬金跟这段木头的长度成正比。为简单起见,不妨就设酬金等于所锯木头的长度。例如,要将长度为20的木头锯成长度为8、7和5的三段,第一次锯木头花费20,将木头锯成12和8...原创 2019-07-21 16:50:50 · 2575 阅读 · 0 评论 -
【PTA】7-39 魔法优惠券(优先队列)
7-39 魔法优惠券 (25 分)在火星上有个魔法商店,提供魔法优惠券。每个优惠劵上印有一个整数面值K,表示若你在购买某商品时使用这张优惠劵,可以得到K倍该商品价值的回报!该商店还免费赠送一些有价值的商品,但是如果你在领取免费赠品的时候使用面值为正的优惠劵,则必须倒贴给商店K倍该商品价值的金额…… 但是不要紧,还有面值为负的优惠劵可以用!(真是神奇的火星)例如,给定一组优惠劵,面值分别为1、2...原创 2019-07-25 16:36:47 · 561 阅读 · 0 评论 -
【PTA】7-24 树种统计(map应用)
7-24 树种统计 (25 分)随着卫星成像技术的应用,自然资源研究机构可以识别每一棵树的种类。请编写程序帮助研究人员统计每种树的数量,计算每种树占总数的百分比。输入格式:输入首先给出正整数N(≤105 ),随后N行,每行给出卫星观测到的一棵树的种类名称。种类名称由不超过30个英文字母和空格组成(大小写不区分)。输出格式:按字典序递增输出各种树的种类名称及其所占总数的百分比,其...原创 2019-07-28 17:43:57 · 224 阅读 · 0 评论 -
【算法速成】树状数组
此为算法速成blog,因此会略去一些推导细节。简介:树状数组是一个查询和插入时间复杂度都在O(logn)的数据结构。应用:主要用于查询区间和或者前n项和,但每次只能修改一个元素的值。经过简单修改可以在log(n)的复杂度下进行范围修改,但是这时只能查询其中一个元素的值(如果加入多个辅助数组则可以实现区间修改与区间查询)。概念:来观察这个图:令这棵树的结点编号为C1,C2…Cn. C...原创 2019-10-01 22:03:09 · 207 阅读 · 0 评论 -
【PTA】7-9 旅游规划(Dijkstra算法)
7-9 旅游规划 (25 分)有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公...原创 2019-07-17 17:00:11 · 729 阅读 · 0 评论 -
【PTA】7-34 任务调度的合理性(拓扑排序)
7-34 任务调度的合理性 (25 分)假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行。“任务调度”包括一组子任务、以及每个子任务可以执行所依赖的子任务集。比如完成一个专业的所有课程学习和毕业设计可以看成一个本科生要完成的一项工程,各门课程可以看成是子任务。有些课程可以同时开设,比如英语和C程序设计,它们没有必须先修哪门的约束;有些课程则...原创 2019-07-29 17:07:28 · 1673 阅读 · 0 评论 -
【PTA】7-15 QQ帐户的申请与登陆(map)
7-15 QQ帐户的申请与登陆 (25 分)实现QQ新帐户申请和老帐户登陆的简化版功能。最大挑战是:据说现在的QQ号码已经有10位数了。输入格式:输入首先给出一个正整数N(≤105),随后给出N行指令。每行指令的格式为:“命令符(空格)QQ号码(空格)密码”。其中命令符为“N”(代表New)时表示要新申请一个QQ号,后面是新帐户的号码和密码;命令符为“L”(代表Login)时表示是老帐户登陆...原创 2019-07-19 17:24:45 · 263 阅读 · 0 评论 -
【二叉树】查找结点(先序+层次)
//ABC##DE#G##F### #include <iostream>using namespace std;typedef struct node{ char data; struct node *lchild; struct node *rchild; int step; }BTnode;void Create(BTnode *&T){ ch...原创 2019-04-14 22:11:17 · 502 阅读 · 0 评论 -
【二叉树】根据序列建树
已知先序序列和中序序列建树:#include <iostream>#include <cstring>using namespace std;typedef struct node{ char data; struct node *lchild; struct node *rchild;}BTNode;//最好先在稿纸上写出a0...ak,ak+1....原创 2019-04-14 22:15:46 · 665 阅读 · 0 评论 -
畅通工程(并查集)
畅通工程某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?Input测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 )和道路数目M;随后的M行对应M条道路,每行...原创 2019-05-01 23:27:50 · 179 阅读 · 0 评论 -
【图论】Dijkstra算法
Dijkstra算法求有权图的单源最短路,下面直接给出模板。测试数据:6 81 3 101 5 301 6 1002 3 53 4 504 6 105 6 605 4 20输出数据:起点 终点 最短路径 长度v1 v2 无 ∞v3 {v1,v3} 10v4 {v1,v5,v4} ...原创 2019-05-17 22:03:59 · 407 阅读 · 0 评论 -
【图论】Floyd算法
Floyd算法解决有权图多源最短路径问题,下面上模板。#include <iostream>#include <cstring>#define MAX 100using namespace std;int map[MAX][MAX];int path[MAX][MAX];int N;//关键: 找中转点,然后比较 void Floyd(){ mem...原创 2019-05-17 22:08:37 · 236 阅读 · 0 评论 -
【PTA】7-7 六度空间 (30 分)
7-7 六度空间 (30 分)“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”“六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原...原创 2019-05-18 20:36:56 · 999 阅读 · 0 评论 -
【PTA】7-8 哈利·波特的考试 (25 分)
7-8 哈利·波特的考试 (25 分)哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠、老鼠变鱼的魔咒连起来念:hahahehe。现在哈...原创 2019-05-18 21:24:02 · 2705 阅读 · 0 评论 -
【PTA】7-35 城市间紧急救援(Dijkstra最短路)
7-35 城市间紧急救援 (25 分)作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队。输入格式:输入第一行给出4个正整数N、M、S、D,其中N(2≤N...原创 2019-07-23 16:48:12 · 1192 阅读 · 0 评论 -
【PTA】7-10 公路村村通 (最小生成树)(Prim+Kruskal)
7-10 公路村村通 (30 分)现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。输入格式:输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。输出格式:输出村村通...原创 2019-07-16 17:06:40 · 921 阅读 · 1 评论 -
【PTA】7-36 社交网络图中结点的“重要性”计算 (bfs)
7-36 社交网络图中结点的“重要性”计算 (30 分) (题目链接)思路分析:这道题看上去挺唬人,但实际上只是虚张声势。题目是无权图,因此用bfs算法判断图连通,求出d<i,j>之和,然后代入公式即可。#include <iostream>#include <cstring> #include <queue>#define MAX 10...原创 2019-07-23 17:41:37 · 780 阅读 · 0 评论 -
【PTA】7-14 电话聊天狂人(map)
7-14 电话聊天狂人 (25 分)给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。输入格式:输入首先给出正整数N(≤105),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。输出格式:在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数...原创 2019-07-19 17:12:47 · 1465 阅读 · 0 评论 -
【二叉树】基本操作集
//ABC##DE#G##F### #include <iostream>#include <cstring>using namespace std;typedef struct node{ char data; struct node *lchild; struct node *rchild;}BTnode;char a[100];int cur...原创 2019-04-14 22:09:17 · 274 阅读 · 0 评论