数据结构
文章平均质量分 57
容艾
这个作者很懒,什么都没留下…
展开
-
数据结构-堆排序
将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了。先来了解下堆的相关概念:堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。题目思路:就是利用堆排序不断的前k项。建立最小堆,并排出结果。原创 2022-09-08 21:21:58 · 324 阅读 · 0 评论 -
2022百度之星第一场初赛
2022百度之星第一场初赛题解原创 2022-08-29 18:47:40 · 2662 阅读 · 0 评论 -
王道数据结构第三章习题笔记
遇事不决可问春风春风不语即随本心我若本心能定怎会遇事不决春风亦有春风愁不劳春风为我忧。自此春风盈满袖,只为一解平安愁。httpshttpshttps。原创 2022-07-26 19:14:48 · 433 阅读 · 0 评论 -
2022河南萌新联赛第(二)场
遇事不决可问春风春风不语即随本心我若本心能定怎会遇事不决春风亦有春风愁不劳春风为我忧。自此春风盈满袖,只为一解平安愁。原创 2022-07-17 17:06:13 · 333 阅读 · 0 评论 -
王道22数据结构课后习题(第二章2.2.3)
2、设计一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1)。3、对长度为n的顺序表L,编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,删除线性表中所有值为x的数据元素。4、从有序顺序表中删除其值在[s,t]之间的所有元素,若s或t不合理或顺序表为空,则显示出错误信息并退出运行。5、从顺序表中删除其值在给定值s与t之间(要求 s < t)的所有元素,若s或t不合理或顺序表为空,则显示出错误信息并退出运行。暴力方法双指针方法6、从有序顺序表中删除所有其值重复原创 2022-06-28 18:47:39 · 1146 阅读 · 0 评论 -
牛客小白月赛52--E 分组求对数和(二分)
思路:从所有的数中找出两个大于k的数字的方案数减去从一个人那里找出的两个数大于k的方案即为答案原创 2022-06-25 19:18:29 · 213 阅读 · 2 评论 -
The 2022 Hangzhou Normal U Summer Trials
B - New StringC - Check ProblemsF - Subarrays两端相等中间和一定为k的倍数H - Optimal Biking Strategy原创 2022-06-13 16:17:26 · 518 阅读 · 3 评论 -
“中国东信杯”广西大学第四届程序设计竞赛(同步赛)
“中国东信杯”广西大学第四届程序设计竞赛(同步赛)“中国东信杯”广西大学第四届程序设计竞赛(同步赛)“中国东信杯”广西大学第四届程序设计竞赛(同步赛)原创 2022-06-11 15:13:43 · 782 阅读 · 0 评论 -
黑龙江职业学院校赛第二场(同步赛)
黑龙江职业学院校赛第二场原创 2022-06-09 22:09:49 · 531 阅读 · 0 评论 -
第十八届浙江大学宁波理工学院程序设计大赛(同步赛)
简单思维B match知识点利用01的个数进行匹配C accept知识点签到D triangle知识点贪心E candy-easy知识点暴力模拟F candy-hard知识点差分+贪心G wave知识点动态规划H communication知识点最小生成树...原创 2022-06-05 15:10:31 · 242 阅读 · 0 评论 -
第十九届浙大城市学院程序设计竞赛(同步赛)
直接输出一个字符串就可B Jiubei and Overwatch题目思路结果具有单调性,直接二分C Ah, It’s Yesterday Once More题目思路通过题目可以得出交换次数一致即可,很明显倒序输出的次数是一致的F Sum of Numerators题目思路显然奇数位是直接加到结果上的,那么问题就在偶数位 ,我们来看: 2 + 4 + 6 + ⋅ ⋅ ⋅ + 2 ∗ i + ⋅ ⋅ ⋅ ,显然它们和分母同时约去一个 2 之后又变成了连续的自然数相加,注意每次项数的变化,然后原创 2022-06-03 14:56:09 · 235 阅读 · 0 评论 -
多比特杯武汉工程大学第四届ACM程序设计竞赛同步赛
模拟B 阶乘求导题目思路直接用题目结论E 讨厌的字符串题目思路思维题G 带黄狗的礼物题目思路相当于从m+n-1中抽m个I 自习室的灯题目思路简单思维J 攻击力进阶测试题目思路树状数组+二分参考链接G题借鉴文章原创 2022-06-01 22:11:35 · 263 阅读 · 0 评论 -
福建农林大学校赛(同步赛)
进制转换,剩下的按题意模拟即可B 派蒙家的荧女仆题目思路 观察可得:对第i对袜子而言,第一只取出时,将放在桌子上,总袜子数加一;第二只袜子取出时,收入衣柜,总答案减一。C 派蒙的奇妙冒险------石之海题目思路 把所有素数染成同一种颜色即可满足题目描述,注意特判1和2。D 派蒙游戏世界对旅行荧妹很不友好题目思路简单贪心。第一步,判断 a+b=n∗(n+1)/2a+b=n*(n+1)/2a+b=n∗(n+1)/2 是否有解,无解则输出NO,第二步,从n到1贪心,若i原创 2022-06-01 22:05:22 · 347 阅读 · 0 评论 -
瓜瓜选妃 (二维差分 + 二分)
浙江农林大学第二十二届程序设计竞赛目录题目描述题目思路题目代码结语目录题目描述对于一个n * m 的矩阵,有k次操作,每次操作给出一个nm矩阵的子矩阵的位置(左上角和右下角坐标),问在第几次操作后nm的矩阵可以完全被子矩阵覆盖,输出最小的操作次数,若k次操作后仍未被覆盖,输出-1;题目思路通过差分对矩阵进行更改,然后通过前缀和判断是否已经满足条件。另外通过二分进行解决,来找出符合题目的解。时间复杂度应该是nlog(n),n=1e5题目代码#include<bits/stdc++.h>原创 2022-05-16 22:56:18 · 210 阅读 · 1 评论 -
浙江农林大学第二十二届程序设计竞赛部分题解
浙江农林大学第二十二届程序设计竞赛目录瓜瓜打游戏(EASY)题目思路题目代码瓜瓜喜欢做 A + B题目思路题目代码瓜瓜不想上电工课题目思路题目代码瓜瓜的 01 串题目思路题目代码策策学长找py题目思路题目代码周周的泡泡题目思路题目代码结语目录瓜瓜打游戏(EASY)题目思路简单dp,状态转移公式如下:dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1] * a[i];题目代码#include<bits/stdc++.h>using namespac原创 2022-05-15 22:55:58 · 496 阅读 · 0 评论 -
第三届全国大学生算法设计与编程挑战赛 (冬季赛)部分题解
部分题解树的果实题目描述题目思路及代码Error题目描述题目思路及代码吃利息题目描述题目思路及代码MP4题目描述题目思路及代码展览题目描述题目思路及代码礼物题目描述题目思路及代码看错题题目描述题目思路及代码结语来自弱校选手的个人题解,题目难度跨越较大,最简单的是c语言期末考试难度,最难的是区域赛金牌难度,题目质量不错,当作练习树的果实题目描述Description题目背景小Y同学是一个高中信息学奥赛里面的蒟蒻,在各位大佬暴切各种dark火题的时候,他还在瑟瑟发抖的学习各种基础知识,在巩固很原创 2022-03-27 22:28:48 · 4779 阅读 · 30 评论 -
[蓝桥杯真题]:压缩变换
[蓝桥杯真题]:压缩变换正文题目描述输入输出思路及代码结语正文题目描述小明最近在研究压缩算法。他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比。然而,要使数值很小是一个挑战。最近,小明需要压缩一些正整数的序列,这些序列的特点是,后面出现的数字很大可能是刚出现过不久的数字。对于这种特殊的序列,小明准备对序列做一个变换来减小数字的值。变换的过程如下:从左到右枚举序列,每枚举到一个数字,如果这个数字没有出现过,刚将数字变换成它的相反数,如果数字出现过,则看它在原序列中最后的一次出原创 2022-03-19 22:45:51 · 338 阅读 · 14 评论 -
蓝桥杯必备算法二:二分搜索
关于二分法的一些总结二分搜索一、二分查找区间内某个数字的下标二、查询区间内<=x的最大值三、查询区间内>=x的最小值四、实数二分五、练习题目1. 网线主管题目描述及输入输出题目思路及代码2. 借教室题目描述及输入输出题目思路及代码六、推荐给大家的一段话二分搜索【下面的程序都是在区间[l,r]上查找x,默认数据顺序非递减】一、二分查找区间内某个数字的下标二分查找区间内某个数字的下标(存在且唯一),不存在返回-1:int search(int l,int r,int x){ int原创 2022-03-16 22:46:36 · 1602 阅读 · 22 评论 -
高级数据结构:树状数组以及逆序对求解
树状数组以及逆序对求解树状数组基础知识lowbit操作讲解单点更新区间查询树状数组应用之逆序对原理题目及代码推荐给大家的一段话树状数组基础知识树状数组是一个查询和修改复杂度都为log(n)的数据结构。主要用于数组的单点修改&&区间求和.另外一个拥有类似功能的是线段树.具体区别和联系如下:两者在复杂度上同级, 但是树状数组的常数明显优于线段树, 其编程复杂度也远小于线段树.树状数组的作用被线段树完全涵盖, 凡是可以使用树状数组解决的问题, 使用线段树一定可以解决, 但是线段树能够原创 2022-03-12 22:45:54 · 1374 阅读 · 22 评论 -
HENAU 冬令营 搜索专题
小组题解dfs题目A - 棋盘问题B - PerketC - 全排列D - 自然数拆分E - Prime Ring ProblemF - Red and Blackbfs题目G - Knight Movesdfs题目A - 棋盘问题思路:从第一列行开始遍历,判断这一行是否可以进行放棋子,然后到下一列,注意这一行不能放是也应该到下一列代码:#include<iostream>#include<cmath>#include<string.h>#include&原创 2022-01-11 21:27:30 · 484 阅读 · 6 评论 -
河南农业大学冬令营字符串专题
题目链接:传送门密码:202201070000资料链接:栈学习资料kmp详解小组题解签到题目A题雷同检测B - 首字母大写C大小写转换D数字反转E - 删除单词后缀F - 判断字符串是否为回文数据结构&&其他算法题目G - 基础数据结构——栈(1)H - 字典序I - 验证子串J - 子串查找K - 剪花布条L - 最长回文子串签到题目A题雷同检测思路:暴力代码:#include<iostream>#include<cmath>#include原创 2022-01-07 21:20:07 · 823 阅读 · 6 评论 -
2021“MINIEYE杯”中国大学生算法设计超级联赛(10)Pty loves string(kmp+可持续化线段树)
思路:首先得出l+x=r-y+1的结果,kmp出所有合法的x,y;构建两个树,跑dfs序列进行离散化,然后用主席树,求出合法x和y;dfs序列:https://blog.csdn.net/gao506440410/article/details/81909292可持续化线段树:https://blog.csdn.net/diaoxiangxi0422/article/details/101255260#include <map>#include <set>#include原创 2021-08-25 21:07:20 · 232 阅读 · 2 评论 -
2020 ICPC Asia Taiwan Online Programming Contest F、G、H题目(二分图匹配,最大覆盖集、最小生成树、线段树延迟标记)
F题目:https://ac.nowcoder.com/acm/contest/18458/F思路:首先是对区间进行加减乘除,所以用线段树维护区间。减法换成加法,除法换成乘法、接着就是注意运算优先级代码:#include <bits/stdc++.h>#define ll long long#define inf 0x3f3f3f3fusing namespace std;typedef pair<int,int> P;const int maxn=1e6+10;c原创 2021-08-14 21:19:11 · 239 阅读 · 0 评论 -
湖南大学第十六届程序设计竞赛(重现赛)J Yuki with playf(二分图最大权匹配)
题目链接:传送门资料链接:洛谷二分图题目题解思路:代码:#include<bits/stdc++.h>using namespace std;typedef long long int ll;typedef pair<int,ll> P;const int N = 5e2 + 50;const int M = 1e6 + 50;const double eps = 1e-7;const int inf = 0x3f3f3f3f;const ll mod =原创 2021-07-26 21:21:25 · 196 阅读 · 0 评论 -
UCF Local Programming Contest Round 1A I题目:Check List 2021(线段树)
题目链接:传送门思路:先将所有点离散化。从左至右遍历每一个点,用线段树维护和统计:1.前面比他高的点的值在线段树中加一表示有了第一段’↘’。2.统计当前这个点的 前面比他低的所有点权值和,表示当前这个点为最高点的’✓’的个数。代码:#include<bits/stdc++.h>using namespace std;typedef long long int ll;typedef pair<int,ll> P;const ll maxn=2e5+7;const ll原创 2021-07-23 21:44:33 · 139 阅读 · 1 评论 -
UCF Local Programming Contest Round 1A G题:Trading Cards2021年(网络流、最小割)
题目链接:传送门资料:学习思路:最大权闭包子图题目,类似于二分图,两边的点集X和点集合Y,点集X包含的是全部收益计划(一个计划一个点),点集Y包含的是全部所需物品(一个物品一个点),每个收益计划点 向 该收益计划需要的全部物品各连一条边,容量都为INF;起点S 对于每个计划连一条边,容量为该计划收益;每个物品对终点T连一条边,容量物品的成本,转换问题完成代码:#include<bits/stdc++.h>using namespace std;typedef long long in原创 2021-07-22 20:41:00 · 172 阅读 · 0 评论 -
河农大训练(三)队列/栈,并查集
链接:传送门A:P5708 【深基2.习2】三角形面积思路:签到题目代码:#include<bits/stdc++.h>using namespace std;typedef long long int ll;const double mod = -1e18;const ll maxn = 1e7+10;double a,b,c,s,p; int main(){ cin>>a>>b>>c; p=(a+b+c)*1.0/2; s=sqr原创 2021-07-10 19:19:41 · 190 阅读 · 0 评论 -
“强智杯“2020年湖南省大学生计算机程序设计竞赛(重现赛)B D H
B:2020 vs 2018题目链接:2020vs2018思路:由于各个数字之间的字符是由间隔的,因此只需要找出有特点的字符即可,我这边找的是数字1代码:#include<iostream>using namespace std;#include<vector>#include<string>#include<map>typedef long long ll;const long long int maxn = 100;int n, m;原创 2021-05-19 10:22:44 · 902 阅读 · 0 评论 -
二叉排序树之创建、查找、插入、修改
资料:二叉排序树建议看完资料后看代码会异常清晰!!!代码:#include<iostream>using namespace std;int n,a[1010];typedef struct node{ int key; int data; struct node *lchild,*rchild;}BSTNode;//节点void insertbst(BSTNode *&bt,int k)//插入{ if(bt==NULL) { bt=new node;原创 2020-12-02 21:27:42 · 247 阅读 · 0 评论 -
树的应用之有向无环图的关键活动(拓扑排序)
前置知识:拓扑排序,邻接矩阵资料:关键路径寻找方法关键活动题目描述输入与输出分析与代码题目描述狼羊之间的战争持续到了2030年,武器也不断升级,现在羊村打算建立一个电磁炮塔,用来抵御狼们的攻击,但是在建立电磁炮塔之前必须完成一些其他的工作,比如开辟新的场地,建立能源站等等,现在告诉你完成工作A之前必须完成工作B,且由工作A到工作B的准备时间为T,时间紧迫,村长jzl想知道加快哪些工作可以使建造电磁炮塔的进度加快,请机智的你来解决这个问题吧!输入与输出输入一行两个整数N和M(2<=N&.原创 2020-11-30 17:33:02 · 180 阅读 · 0 评论 -
树的应用:最短路(多对节点之间的最短路径)
最短路题目描述题目输入与输出思路及代码题目描述暗黑法王JZL的爪牙几乎渗透了整个魔法世界,你所在的学院“兰亭园”成为唯一安全的地方,为了对抗邪恶的暗黑法王,学院的法师们需要不停地修炼自己的法术,而当他们修炼到一定程度时,就可以进阶成下一阶魔法师。比如最开始所有学员都是白袍魔法师,可以进阶成蓝袍法师,黄袍法师、绿袍法师……然而大部分法师在暗黑法王面前都是弟弟,只有红袍法师才能与之抗衡,可惜学院迄今为止没有一个法师能够修炼成红袍法师,时间紧迫,还好学院有祖先们传下来的水晶,这些水晶蕴含着强大的能量,可以让一原创 2020-11-30 17:21:58 · 860 阅读 · 0 评论 -
树的应用之最小生成树和最短路(模板题目)
前置知识:并查集、sort排序、最短路解题思路、克鲁斯卡尔算法、快速读写最短路:**思路:**先初始化距离,然后不断加入节点,每次加入一个,更新剩下节点题目链接:传送门题目描述给出一个有向图,设起点为1,设Ai为起点到点i的最短路径距离,你请按1~n的顺序输出Ai。输入第一行两个正整数n,m用空格隔开(n≤100,m≤1000)代表n个顶点,m条边。 接下来m行每行三个整数u,v,w代表有一条权值为w的边从u到v,(1≤u,v≤n,1≤w≤100000)可能含有重边。样例解释如上。输出.原创 2020-11-26 22:58:08 · 275 阅读 · 0 评论 -
树的遍历之后序遍历和层次遍历(河南农业大学oj--1216)
题目链接:题目传送门题目描述给定一颗有n个结点的树,然后给出n-1条关系,第i条包含两个数字x,y分别代表x与y之间有边相连,且x是y的父节点。请输出这个树的后序遍历及其层次遍历,假定始终以1为根。请使用孩子兄弟表示法实现,请按照边的给定顺序来连接兄弟节点.例如:先1 2,后1 3,那么3就是2的兄弟先1 3,后1 2,那么2就是3的兄弟先1 2,后1 3,后1 4,那么3是2的兄弟,4是3的兄弟输入一个数字n(1<=n<=1000)。接下来n-1行,每行包含两个数字x,y原创 2020-11-26 22:37:52 · 817 阅读 · 0 评论 -
数据结构之树:赫夫曼树和赫夫曼编码以及应用(牛客--合并果子)
赫夫曼树详解:详解赫夫曼编码:详解代码:#include <iostream>using namespace std;typedef struct{ int parent; int lchild,rchild; int weight;}HNode;//树节点typedef struct{ char cd[100]; int start;}HCode;//编码节点void CreateHT(HNode ht[],int n0){原创 2020-11-16 18:02:25 · 298 阅读 · 1 评论 -
二叉树:构造二叉树(通过前序和中序遍历)、镜像翻转、层次遍历
相关知识:镜像反转:资料传送二叉树:知识大集合题目练习:题目集模板代码:#include<iostream>#include<queue>using namespace std;const int N=100;struct tree{ char data; struct tree *lchild; struct tree *rchlid;};typedef tree* B;tree *CreateBIT(char *a,char *b,int n)//原创 2020-11-11 19:33:39 · 278 阅读 · 0 评论 -
C++技巧:用class类实现链表
题目描述编写一个类,实现简单的栈(提示:用链表结构实现)。数据的操作按先进后出(FILO)的顺序。提示:成员函数为void queue::put(int item); //将数据item插入到栈中int queue::get(); //从栈中取数据数据成员为一个指向链首的指针链表结构为struct Node{int a;Node* next;}对象使用过程queue que;que.put(10);que.put(12);que.put(14);cout<&原创 2020-11-03 16:35:01 · 2605 阅读 · 0 评论 -
kmp小练:子串--牛客
链接:传送门思路:先转化为各种进制的串,在匹配,只是一个模板应用,难度不高#include<iostream>#include<queue>#include<string.h>#include<cmath>#include<stack>using namespace std;typedef pair<int, int> P;const long long int N = 1000000;const int INF =原创 2020-10-26 17:41:00 · 146 阅读 · 0 评论 -
数据结构之队列及其应用(迷宫最短路)
链式结构1.进队2.出队3.判断为空4.个数5.初始化#include<iostream>using namespace std;struct node{ int data; node *next;};typedef struct{ node *front; node *rear;}Queue;void init(Queue *&s){ s=new Queue; s->front=s->rear=NULL;}//初始化bool e原创 2020-10-23 17:43:34 · 387 阅读 · 0 评论 -
计算表达式值(后缀表达式)--栈
处理表达式主要是对优先级以及括号的判断1.运算符栈顶的优先级小于加入的时,需要将所有的不评级的取出并计算,2.当遇到)时,需要括号内的运算全部处理2.其他情况全部加入运算符栈和数据栈代码:#include<iostream>#include<cstdlib>#include<stack>using namespace std;typedef long long int ll;const int MAXN =10;stack<char> s原创 2020-10-17 18:08:35 · 255 阅读 · 0 评论 -
线性表:循环链表(猴子选大王)和有序表
代码有注释有序表代码:#include<bits/stdc++.h>using namespace std;typedef struct node{ int data; node *next;}Sqlist;const int N=100; int n;void init(Sqlist *&h){ h=(Sqlist *)malloc(sizeof(Sqlist)); h->next=NULL;}void createlist(Sqlist *&am原创 2020-10-16 17:53:42 · 568 阅读 · 1 评论