数据结构
文章平均质量分 58
TodayMagic
这个作者很懒,什么都没留下…
展开
-
2021 RoboCom 世界机器人开发者大赛-本科组(初赛)7-4 疫情防控 (30 分)
题目大意:给定一个 nnn 个顶点, mmm 条边的图,现在对图进行 ddd 次操作, 每次操作为标记编号为 ccc 的顶点不能走(即删除与 ccc 相连的边),每次操作中又有 qqq 次询问:编号 xxx 和 编号 yyy 之间是否有通路。思路:这个题目如果采用每次询问一次就遍历图,那么复杂度显然是 5∗10000∗1000∗10005 * 10000 * 1000 * 10005∗10000∗1000∗1000, 显然会超时。因此,这种暴力 dfsdfsdfs 模拟算法显然会超时。仔细一想,原创 2021-10-19 20:23:03 · 320 阅读 · 0 评论 -
2021 RoboCom 世界机器人开发者大赛-本科组(复赛)7-2 拼题A打卡奖励 (25 分)
题目大意:给定 NNN张打卡卷,第 iii 张打卡卷需要 mim_imi 分钟做完,完成后可获得 cic_ici 枚奖励的金币。问 MMM 分钟内最多可以得到多少金币。思路:显然这是一个01背包问题。但是,按照常规的想法,把时间看成是物品的体积,金币看成是价值,则 MMM 就是背包的容量。但是根据题目的数据范围, M(≤365×24×60)M(≤365×24×60)M(≤365×24×60) ,复杂度 NMNMNM (N<1000)(N < 1000)(N<1000) 肯定会原创 2021-10-18 20:07:58 · 460 阅读 · 0 评论 -
Floyd(弗洛伊德)算法
在看我这篇博客之前,请大家观看B站的视频Dijkstra,floyd算法动画演示讲解,这位up主讲的很好,然后你看模板代码,相信你会有所收获。 上篇博客我讲了Dijkstra算法,只要你理解了Dijkstra算法,那么Floyd算法就会变得很简单,无非就是求全员最短路问题,即,图中任何两个顶点的最短距离。原理:如果存在顶点 k ,使得顶点 i 和顶点 j 之间的当前最短路距离缩短,则使用 k 做为中转点,即由 i —> j 变为 i — k — j。表达式:如果dis[i][k] + dis[k原创 2021-01-23 17:38:38 · 180 阅读 · 0 评论 -
Dijkstra(迪杰斯特拉)算法
在看我这篇博客之前,请大家观看B站的视频Dijkstra,floyd算法动画演示讲解,这位up主讲的很好,然后你看模板代码,以及我给的例题,相信你会大有收获。1.Dijkstra算法Dijkstra算法解决的是单源最短路问题,并且边权只能为正值。//模板 int n, g[MAXV][MAXV];bool visit[MACV] = {false};int dis[MAXV]//起点到各点的最短长度 void Dijkstra(int s)//s为起点 { fill(dis, dis .原创 2020-12-15 17:51:11 · 199 阅读 · 1 评论 -
lower_bound 函数的C语言实现
题目大意:请实现有重复数字的有序数组的二分查找。输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。样例输入:5 41 2 4 4 5样例输出3#include <stdio.h>#include <stdlib.h>int a[1000005];int main() { int n, m; scanf("%d %d",&n, &m); int i; for(i = 0; i < n; i++)原创 2020-12-13 10:20:21 · 1352 阅读 · 0 评论 -
LeetCode106. 从中序与后序遍历序列构造二叉树
做这个题之前推荐大家去看浙大柳婼的一遍博客:二叉树已知中序后序遍历重构二叉树根据一棵树的中序遍历与后序遍历构造二叉树。 注意:你可以假设树中没有重复的元素。例如,给出:中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树:3/ \9 20/ \15 7class Solution {public: TreeNode* buildTree(vector<int>原创 2020-12-10 19:08:35 · 124 阅读 · 2 评论