数据结构学习
没头脑也很高兴
这个作者很懒,什么都没留下…
展开
-
撒斯泰克大学lab10a题
题意就是用prim algorithm求出最小生成树的total weightidea使用邻接链表储存邻接节点。1.首先将第一个节点加入最小生成树的节点集合A中,这里第一个加入的节点可以随意,不必是图最短边的节点。用TotalCost储存与集合A相邻的顶点的最小权值,0表示该结点已经在MST中,如果没有边连接的话,就是infinite。2. 对于剩下的N-1个节点,就是循环N-1次,每一次找到与集合A相邻的但不在集合A中的权重最小的点nVertex,将它加入到集合A中,同时更新totalCoast原创 2020-12-20 15:01:21 · 201 阅读 · 0 评论 -
撒斯泰克大学lab9f题
题意就是求有向有权图中,最小的第k条边。题目来源:hdu6705idea先用arraylist存图(邻接链表),然后将每个点的邻接链表中的边按照边的权值从小到大排序。将每个顶点作为起点的边里最短的边存入优先队列。对于存入的路径的信息,应有起点,终点,权值,以及最新加入的边是其起点的第几短边。这里专门说一下,这里的起点是指这条路径上的倒数第二个点。例如,对于路径从V1到V4#mermaid-svg-ag9lyA5CmRQOpb0R .label{font-family:'trebuchet ms'原创 2020-12-16 17:01:58 · 214 阅读 · 0 评论 -
萨斯泰克大学lab8c
来源:poj1475idea:贪心+优先队列:显然在第t天的时候 要在不变质的情况下卖掉利润前t大的,用优先队列维护就行。具体的就是 ,先按过期时间从先到后,再按利润从大到小排序,优先队列按利润从小到大排,然后一一枚举。 对于每一个商品 如果商品过期天数等于队列的大小,则判断队头的利润和该商品的利润大小关系,如果该商品的利润大于队头的利润 ,则队头出队(因为有利润更大的满足条件的商品),该商品入队。 当该商品过期天数大于队列的大小时候,该商品在此时显然满足条件,可以直接入队。#include<原创 2020-12-25 15:18:49 · 126 阅读 · 0 评论 -
撒斯泰克大学lab7f题;
题面:idea题目来源:2019牛客暑期多校训练营(第四场合集)原创 2020-12-28 19:27:29 · 86 阅读 · 0 评论 -
撒斯泰克大学lab7e题
这道题的来源是聪明的木匠和切棍子idea:这道题运用了三个主要概念:“正难则反” 和 “哈夫曼树”和“优先队列”。我们先正着来思考,发现对于最少的体力,应该是最短板被切割的次数最多,因为总的体力花费是每个木棒被切的次数。可是我们发现很难实现,所以反过来思考,将n个木棒拼接回原来的样子并且花费体力最少,每次也都是需要将两个最短的木棒拼起来。每次从剩余的木棒中取出最短的两个,拼好之后放回去,这就用到了哈夫曼树的性质在这道题里,我们可以借助哈夫曼树来实现我们的思想:每次从剩余的木棒中取出最短的两.原创 2020-12-25 15:13:08 · 120 阅读 · 0 评论 -
撒斯泰克大学leb6d题
该题目来源于HDU - 3746Step1 Problem:给你一个字符串s, 问 s 变成周期串至少需要加几个字符。Step2 Ideas:个人习惯从0开始,next[0] = 0;next[i] : 代表下标从 0 到 i 这个子串,后缀 = 前缀 最长长度(不包括自身)。串的周期 T = len - next[len-1];1.T == len, 添加 len 个字符,才能构成周期次数为 2 的周期串。2.len % T == 0 && next[len-1] !原创 2020-12-25 15:12:42 · 80 阅读 · 0 评论 -
merge_sort
我的mergeSort的简单实现 public static long mergeSort(int[] Demo,int S,int e){ long count=0l; if (S<e){ int mid = S + ((e - S) >> 1); count+=mergeSort(Demo, S, mid); count+=mergeSort(Demo, mid + 1, e);原创 2020-11-11 14:12:36 · 69 阅读 · 0 评论 -
撒斯泰克大学第五次lab第一题
题目There are n brackets, and Skylar want to know whether they are matched. The brackets will only contain {, }, (, ), [, ]. Here is the matching rules. For example, {{[}]} is not matching, but [{{}}()] is matching. Please write a program to check whether原创 2020-12-25 14:55:21 · 90 阅读 · 0 评论 -
2020-10-11
queueproperty1.你只能访问头部元素FIFO。2.队列可以基于数组或链表实现,要使用两个指针指向队首和队尾。3.入队操作包元素放在队尾,然后把队尾指针移到下一个位置.要注意爆栈(设定最大容量)4.出队只需要把队首指针向后移。5.环形列表可以解决空间利用问题。...原创 2020-10-11 20:35:34 · 60 阅读 · 0 评论 -
尺取算法
给一个数组n,找数组中最小子区间,使得子区间之和不小于给定的数m。算法复杂度为O(n)#include "iostream"#include <algorithm>void sinpleFunction(int* array,int n,int m);int a[100005];int main(){ int n,m; std::cin >> n >> m; for(int i = 0;i < n;i++) std:原创 2020-10-11 19:42:46 · 107 阅读 · 0 评论 -
linkedlist笔记(一)
linkedlist数组优势:高效,每个元素访问时间是常数,这一特性叫随机访问缺点:要申明初始化大小,很难去在任意位置插入或删除linkedlist定义:一种储存数据的形式优点:过不同的节点储存一串数据,每个节点包含一个数据,同时包含指向下一个数据的链接,最后一个元素的链接为“NULL”。linkedlist可以无限延长,不需要提前声明大小,同时插入和取出元素很容易,只需要改变指向的链接就好。插入元素的复杂度为O(n)缺点:1.不能随机访问2.储存要占据额外的储存空间,要额外储存指向节点的链接原创 2020-09-27 10:15:33 · 106 阅读 · 0 评论 -
二分法引申之分别取目标元素的最小索引和最大索引
因为逻辑太过简单,所以省略不写只是要注意的是,取最小索引时,要让mid=(r+l)/2;意味着取left和right和除以2向下取整,取最大索引时,要让mid=(l+r+1)/2,意味着取left和right和除以2向上取整取目标元素的最小索引伪代码left←\leftarrow← 1right←\leftarrow← array.lengthrepeatmid=(right+left)/2;if array[mid]=ratghtthen right=midelse if array[原创 2020-09-24 19:03:43 · 142 阅读 · 0 评论 -
撒斯泰克大学2020秋季dsaa题目
先上原题Tower of Hanoi is one of the most famous puzzles in the world. There are three different rods labeled A, B and C. The puzzle starts with the disks in ascending order of size on the A rod (The smallest at the top). You have the following rules:Only o原创 2020-09-22 18:00:58 · 185 阅读 · 0 评论 -
C++函数和链接
函数:C++语言不允许在一个函数中定义另外一个函数。默认情况下,函数的链接性为外部,即可以在文件间共享。可以在函数原型中使用关键字extern来指定函数是在林一个文件中定义的。(这部分是可选的)可以使用关键字static将函数的链接性将函数的链接性设置为内部,使之只能在一个文件中使用。(必须同时在原型和 函数定义中使用static)第三点中,在定义静态函数的文件中,静态函数将覆盖外部定义,因此即使在外部定义了同名的函数,该文件任将使用静态函数。内联函数不受单定义规则约束,这允许程序原创 2020-06-29 21:59:43 · 455 阅读 · 0 评论 -
C++外部链接的常量与变量
外部链接常量如果某个链接性为外部的,则可以使用extern关键字来覆盖默认的内部链接性。例子extern const int states=10;在这种情况下,必须在所有使用该常量的文件中使用extern关键字来声明它。由于单个const在多个文件之间共享,因此只有一个文件可对其初始化。外部链接变量链接性为外部的变量通常简称为外部变量,它们的存储持续性为静态,作用域为整个文件,外部变量是在函数外部定义的,因此对所有的函数而言都是外部的。例如:可以在main()钱买你或头文件中定义它们。可以在文件原创 2020-06-29 21:44:39 · 408 阅读 · 0 评论 -
链表简单实现
链表简单实现```javaclass Node<T>{ T name; public Node(T name, Node next, Node previdous) { this.name = name; this.next = next; this.previdous = previdous; } ...原创 2020-02-08 10:50:36 · 345 阅读 · 0 评论