
数据结构
阿言在学习
这个作者很懒,什么都没留下…
展开
-
Happy Week
阅览室#include<bits/stdc++.h>using namespace std;const int N = 1e3 + 15;struct node{ int hh,mm; bool flag;//这本书当前有没有借出}a[N];int n;double Get(int h1,int m1,int h2,int m2){ double res = 0; res = h2 * 60 + m2 - (h1 * 60 + m1); .原创 2020-12-13 19:46:01 · 683 阅读 · 2 评论 -
L2-030 冰岛人 (25分)
这个题有一点是挺恶心人的,下面给出:普通的维京人是要么sson要么sdottir,但是祖宗维京人就不是了,祖宗应该是m,并且祖宗的姓,去掉m之后并不是一个人的名字,就是一个单纯的姓而已,这里搞明白,你就懂了!L2-030冰岛人(25分)2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名。好事者发现冰岛人的名字后面似乎都有个“松”(son),于是有网友科普如下:冰岛人沿用的是维京人古老的父系姓制,孩子的姓等于父亲的名加后缀,如果是儿子就加 sson,女儿则加 sdottir。..原创 2020-11-27 21:26:53 · 505 阅读 · 0 评论 -
L2-018 多项式A除以B (25分)
这个题纯模拟题,但是有个地方有一点点坑。可以看到本题中,并没有说明多项式的项数范围,所以我们选择一个STL的容器,来规避越界问题。我们在模拟中的操作近乎是竖式的操作,需要从最大次数项遍历到最小次数项,如果我们选择vector,那么vector必须开到1e9,直接爆炸,所以我们选择unordered_map<int,double>,first是指数,second是系数L2-018多项式A除以B(25分)这仍然是一道关于A/B的题,只不过A和B都换成了多项式。你需要计算两个多项式..原创 2020-11-26 17:28:23 · 683 阅读 · 0 评论 -
L2-007 家庭房产 (25分)
题目不是很难,简单整理几个做的时候遇到的问题:1.数据结构的判断:很明显是个数据结构题吧,第一反应是用树来做,但后来发现一个孩子有两个父亲结点啊,那么显然就不是一个树结构能解决的了的了,那么分析问题发现,这个题的原型是图,这个图是不连通的,一块连通区域是一个家庭,所以直接并查集将所有连通点归到一个图形里。2.结构体的定义:一般情况下都是定义一个结构体,也就是说,st1与st2两个结构体存在不相同的属性,那么我们为了做题方便起见,我们就把st1与st2属性的并集形成一个st3,我们用st3来写。3原创 2020-11-24 20:08:55 · 770 阅读 · 0 评论 -
秀恩爱分得快-模拟题
一看是个简单的模拟题,但是需要注意的是输入数据中给的-0这种情况,所以我们需要将数字读成字符串,然后就面临一个问题,到底是string写map还是String转int写hash,还是string转int好一些,用最基本的数据结构才是最简单的。 另外,在相片里需要确认,是否含有fa和fb两个人,最方便的写法就是用find函数,find(v.begin(),v.end(),1) != v.end()就是找到了。L2-028秀恩爱分得快(25分)古人云:秀恩爱,分得快。互联网上每天都有...原创 2020-11-18 17:58:31 · 939 阅读 · 0 评论 -
手写建堆
有个地方需要明确一下,堆是一棵完全二叉树,也就是n个结点的堆,正好可以占满长度为n的数组,进一步来说就是严格遵守k / 2 是 k的父亲结点,那么我们在建堆的过程中,我们认为第k个加入的点都应该在第k个位置,那么再 k/2 一层一层的比较,如果不满足最小堆或者最大堆定义,就直接交换即可,保持 k > 1 合法数据!7-6 关于堆的判断 (25分)将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。命题分下列几种:x is the root:x是根结点;x an原创 2020-10-20 20:50:16 · 186 阅读 · 0 评论 -
关于图的题目不给数据范围的情况如何解决
1.就比如L3_08,图中所有边的距离都相等,所以只需要存哪里有边,所以直接vector<vector<int> > a,就可!2.再比如蓝桥杯官网历届真题第九题,边与边之间距离不相等的时候,我们选择vector<vector<pair<int,int> > > a,这种形式来存,加数据的时候我们选择#include<algor...原创 2020-03-21 00:06:41 · 169 阅读 · 0 评论 -
L3_08——图中所有边都是相等的常数
这个题之所以整理是因为他不需要使用Dijkstra,就是利用了所有边都相等的这个特性,直接选择了bfs,即快又省事,所以以后再做图的问题时,先考虑两个搜索可不可行,再做结论L3-008喊山(30分)喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤。呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的。原来它是...原创 2020-03-20 23:59:59 · 189 阅读 · 0 评论 -
树的直径
树的直径:树中,最短距离最长的两个点的距离解决方案:大佬做法:树状dp小孩做法:双dfs利用的性质:随便找一点P找出他最短距离最长的点Q,再对Q点找他的最短距离最长的点W,QW就是直径。画个图自己看看,我也没看明白怎么证的。这个地方用bfs也是可以的,看个人爱好。当然bfs肯定是快点试题 历届试题 大臣的旅费提交此题资源限制时间限制:1.0s 内存限制...原创 2020-03-20 23:56:44 · 267 阅读 · 0 评论 -
特殊堆栈
整理的目的是明确插入算法和查询算法的时间复杂度。 找到数组a中与x相同的值,时间复杂度最快是logn的,用的是二分的思想,我们可以选择lower_bound来使用,lower_bound:lower_bound(a.begin(),a.end(),x)返回值是指针或者迭代器 因为我们需要拿到中值,则需要选择使用sort或者插入维护,对于sort最快是onlogn,而insert是先...原创 2020-03-16 12:02:35 · 592 阅读 · 0 评论 -
L2-028 秀恩爱分得快
感觉这个题出的很有问题,题目没有保证情侣一定都拍过照,并且所有人的性别不一定都会明确,所以当情侣中有一位没拍过照的时候,就需要打印所有点,那么有些人的性别是不明确的,就出现了很不严谨的问题。 这里我们分析两个思路: 思路1:用string存id,用map<string,double>存亲密值,用vector<vector<string> >存相...原创 2020-03-07 19:31:31 · 373 阅读 · 0 评论 -
利用后中遍历结果,重构二叉树
这个题是利用树的基础,来模拟人为通过后中重构树的过程有个小技巧在于,前中后遍历中,虽然所得结果的排序不同,但是子树所在的区域近乎相同,相差不大于1对于后中重构中,我们很容易得到右子树的根,却难得到左子树的根,利用上述结论,可以间接求出右子树的长度,进而确定中序遍历中,左子树的位置,进而找到后序中,左子树的根具体在哪L2-006树的遍历(25分)给定一棵二叉树的后序遍历和中序遍历...原创 2020-03-03 01:13:34 · 204 阅读 · 0 评论 -
团队天梯——“冰岛人”——巧用STL
这个题考察的是散列熟练运用,利用STL中的unordered_map映射关系,建立家族树struct node{ string father; int sex;};unordered_map<string,node> Person;问题1:如何判断要查询的点是否是树中的点string f;Person.find(f) != Person.end(...原创 2020-02-02 14:59:31 · 722 阅读 · 0 评论 -
STL vector的迭代器的熟练运用及lower_bound和upper_bound的使用
这篇博客的书写来自于7-9特殊堆栈(30分)这个题的C++题解(我也不知道为什么,什么年代了还有人用C写题解,我真是服了woc) 1.首先我们明确一下,你要定义一个迭代器的基本语法是什么:vector<type>::iterator it;这是基本语法,我以前一直忘了写<type>,这个应该跟Java里面的声明泛型的类型差不多个意思,只是C++你不具体声明他就...原创 2020-01-24 00:42:51 · 2717 阅读 · 0 评论 -
对C++中set的遍历以及结构体类型的set遍历细节
1.set的遍历只能是迭代器遍历,即set<type>::iterator it = st.begin(); it!=st.end();it++2.struct node{int integer;}for(set<type>::iterator it = st.begin(); it!=st.end();it++){cout<<(*i...原创 2020-01-22 14:27:19 · 3326 阅读 · 1 评论 -
数据结构排序算法思路总结
以下是我思维导图的链接:https://www.processon.com/view/link/5deb167be4b093b9f77156c5原创 2019-12-07 11:04:18 · 201 阅读 · 0 评论 -
天梯赛座位分布-一点都不垃圾的模拟题,代码长度超过100行的都是傻子
7-4天梯赛座位分配(20分)天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情。为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位参赛选手。令每校选手排成一列纵队,第 i+1 队的选手排在第 i 队选手之后。从第 1 所学校开始,各校的第 1 位队员顺次入座,然后是各校的第 2 位队员……...原创 2019-12-02 22:27:12 · 342 阅读 · 0 评论 -
并查集
7-12部落(25分)在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈。我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查任意两个人是否属于同一个部落。输入格式:输入在第一行给出一个正整数N(≤104),是已知小圈子的个数。随后N行,每行按下列格式给出一个小圈子里的人:KP[1]P[2]...原创 2019-12-01 21:57:15 · 182 阅读 · 0 评论 -
小字辈 ——BST
7-4小字辈(左子右兄加强版)(25分)本题给定一个庞大家族的家谱,要请你给出最小一辈的名单。需要注意的是,家族成员的输入方式,是按照“Left-child Right-sibling”(左儿子 右兄弟)的格式【敲黑板】sibling的意思是兄弟/姐妹,是亲兄弟,不是“表兄弟”!2019年春季PAT中不认识单词sibling的孩纸请牢记……注:本题是在浙江大学陈越老师的GPLT...原创 2019-11-30 21:51:24 · 1085 阅读 · 1 评论 -
最小生成树
DescriptionFarmer John has been elected mayor of his town! One of his campaign promises was to bring internet connectivity to all farms in the area. He needs your help, of course.Farmer John ordered...原创 2019-11-25 21:26:10 · 130 阅读 · 0 评论 -
第七章思维导图前半段
https://www.processon.com/view/link/5dd7e734e4b0f3c8d4df705f原创 2019-11-22 21:51:02 · 214 阅读 · 0 评论 -
最短路问题_Dijkstra算法
模板如下:现在我将在代码注释中解释此算法!让我们先从主函数看起#include#includeusing namespace std;#define MAXN 2550#define INF 0x3f3f3fint n,m,s,d;int dist[MAXN];//i到j的最短距离int graph[MAXN][MAXN];bool vis[MAXN] = {false};i...原创 2019-11-19 21:56:52 · 194 阅读 · 0 评论 -
BST—AVL树——数据结构
7-1 Root of AVL Tree (25 分)An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by m...原创 2019-11-18 16:47:11 · 473 阅读 · 1 评论