随笔分类 -  算法提高课

摘要:题目描述 题目链接 题目思路 维护当前结点的最大值 向序列后添加一个数,相当于将最后一个数修改为某数 询问这个序列中最后L个数中最大的数是多少,相当于求两个子结点的最大值 题目代码 #include <cstdio> #include <iostream> #include <cstring> #i 阅读全文
posted @ 2022-07-30 17:20 esico 阅读(29) 评论(0) 推荐(0) 编辑
摘要:题目描述 题目链接 题目思路 让排头当根节点 维护当前点距根节点的距离 题目代码 #include <iostream> #include <cstring> #include <algorithm> #include <cstdio> using namespace std; const int 阅读全文
posted @ 2022-07-19 16:48 esico 阅读(31) 评论(0) 推荐(0) 编辑
摘要:题目描述 题目链接 题目思路 先进行离散化(题目中给的数据范围很大,但需要用到的很少),10^9^ ==> 2 × 10^6^ 离散化方式: 若要求保序:排序、判重、二分 若不要求保序,用map 本题约束条件的顺序无所谓,则先考虑所有相等的约束条件(一定无矛盾),再考虑不相等的约束条件 相等则放在一 阅读全文
posted @ 2022-07-19 12:40 esico 阅读(27) 评论(0) 推荐(0) 编辑
摘要:题目描述 题目链接 题目思路 把所有有边相连的点合并在一起,并且维护总体积和总价值 把每个连通块看成一个物品,之后做一遍01背包 时间复杂度:O(nw) 题目代码 #include <iostream> #include <cstring> #include <algorithm> using na 阅读全文
posted @ 2022-07-19 10:23 esico 阅读(39) 评论(0) 推荐(0) 编辑
摘要:题目描述 题目链接 题目思路 如果两个点连边之前在一个集合里,那么连边后就构成一个环 如果两个点连边之前不在一个集合里,那么连边后就不构成一个环 从前往后合并,直到第一次出现环为止 把二维坐标转化为一维坐标,(x,y)==> x × n + y, xy坐标都从0开始 题目代码 #include <i 阅读全文
posted @ 2022-07-19 10:05 esico 阅读(27) 评论(0) 推荐(0) 编辑
摘要:题目描述 题目链接 题目思路 A*算法:终点第一次从终点弹出时,一定是最小值 估价函数:从当前点到终点的最短距离,估计距离<=真实距离(在终点跑一遍dijkstra算法即可) 终点弹第几次就是第几短路 题目代码 #include <iostream> #include <cstring> #incl 阅读全文
posted @ 2022-07-18 10:23 esico 阅读(16) 评论(0) 推荐(0) 编辑
摘要:题目描述 题目链接 解决思路 启发函数:只需要搜索非常少的状态,就可以搜到从起点到终点的最短路径 估价函数:当前状态中每个数与它的目标位置的曼哈顿距离之和 A*算法 优先级为:从起点到当前点的真实距离 + 从当前点到终点的估计距离 题目代码 #include <iostream> #include 阅读全文
posted @ 2022-07-17 11:43 esico 阅读(29) 评论(0) 推荐(0) 编辑
摘要:题目描述 题目链接 题目大意 从字符串A到字符串B需要至少经过几次替换 解题思路 双向广搜:从两个方向同时搜索,而不是从一个方向搜到另一个方向 每次每一边只扩展一个点是不正确的,正确做法应该是每次每边扩展完整一层 题目代码 #include <iostream> #include <cstring> 阅读全文
posted @ 2022-07-15 16:25 esico 阅读(18) 评论(0) 推荐(0) 编辑
摘要:题目描述 题目链接 题目大意 找到一条从左上角到右下角的通路 旋转格子次数最少 解题思路 运用双端队列广搜 不旋转则权重为0,旋转则权重为1 从队头扩展出的边的权重为0时,插到队头,权重为1时,插到队尾 偏移量求解如下图: 题目代码 #include <iostream> #include <cst 阅读全文
posted @ 2022-07-14 11:07 esico 阅读(32) 评论(0) 推荐(0) 编辑
摘要:题目链接 题目描述 见题目链接! 解题思路 将每一种魔板看作一个点,从初始状态12345678搜到目标状态 用unordered_map进行哈希,如:<String, int> ==> <"21345678", 2>,指从初始状态到目前状态需要操作多少次 因为还要输出进行的操作序列,如<String 阅读全文
posted @ 2022-07-13 17:22 esico 阅读(19) 评论(0) 推荐(0) 编辑
摘要:题目链接 题目描述 请见原题目! 该题目为 求某个点到离它最近的起点的距离 题目代码 /* 求某个点到离它最近的起点的距离 tt = -1 : 其他初始为 0是因为 main里面传了一个值作为队尾 也就是传入的 q[0]是队尾,而这没有传值 如果 tt还是从 0开始, ++ tt就会导致 q[0] 阅读全文
posted @ 2022-07-12 16:50 esico 阅读(21) 评论(0) 推荐(0) 编辑
摘要:题目链接 题目描述 农夫知道一头牛的位置,想要抓住它。 农夫和牛都位于数轴上,农夫起始位于点 N,牛位于点 K。 农夫有两种移动方式: 从 X 移动到 X−1 或 X+1,每次移动花费一分钟 从 X 移动到 2∗X,每次移动花费一分钟 假设牛没有意识到农夫的行动,站在原地不动。 农夫最少要花多少时间 阅读全文
posted @ 2022-07-12 11:19 esico 阅读(23) 评论(0) 推荐(0) 编辑
摘要:题目链接 题目描述 农民 John 有很多牛,他想交易其中一头被 Don 称为 The Knight 的牛。 这头牛有一个独一无二的超能力,在农场里像 Knight 一样地跳(就是我们熟悉的象棋中马的走法)。 虽然这头神奇的牛不能跳到树上和石头上,但是它可以在牧场上随意跳,我们把牧场用一个 x,y 阅读全文
posted @ 2022-07-12 10:44 esico 阅读(28) 评论(0) 推荐(0) 编辑
摘要:题目链接 题目描述 给定一个 n×n 的二维数组, 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。 数据保证至少存在一条从左上角走到右下角的路径。 题目代码 #include <iostream> #include <c 阅读全文
posted @ 2022-07-12 09:37 esico 阅读(29) 评论(0) 推荐(0) 编辑
摘要:题目链接 题目描述 FGD小朋友特别喜欢爬山,在爬山的时候他就在研究山峰和山谷。 为了能够对旅程有一个安排,他想知道山峰和山谷的数量。 给定一个地图,为FGD想要旅行的区域,地图被分为 n×n 的网格,每个格子 (i,j) 的高度 w(i,j) 是给定的。 若两个格子有公共顶点,那么它们就是相邻的格 阅读全文
posted @ 2022-07-11 17:06 esico 阅读(37) 评论(0) 推荐(0) 编辑
摘要:题目链接 题目描述 请你编写一个程序,计算城堡一共有多少房间,最大的房间有多大。 城堡被分割成 m∗n个方格区域,每个方格区域可以有0~4面墙。 注意:墙体厚度忽略不计。 题目代码 #include <iostream> #include <algorithm> #define x first #d 阅读全文
posted @ 2022-07-11 12:26 esico 阅读(18) 评论(0) 推荐(0) 编辑
摘要:题目链接 题目描述 农夫约翰有一片 N∗M 的矩形土地。 最近,由于降雨的原因,部分土地被水淹没了。 现在用一个字符矩阵来表示他的土地。 每个单元格内,如果包含雨水,则用“W”表示,如果不含雨水,则用“.”表示。 现在,约翰想知道他的土地中形成了多少片池塘。 每组相连的积水单元格集合可以看作是一片池 阅读全文
posted @ 2022-07-11 10:43 esico 阅读(45) 评论(0) 推荐(0) 编辑
摘要:搜索 DFS Flood Fill 可以在线性时间复杂度内,找到某个点所在的连通块 池塘计数 城堡问题 山峰和山谷 最短路模型 所有边权重都一样的最短路算法 迷宫问题 武士风度的牛 抓住那头牛 多源BFS 起点不唯一,如果有多个起点如何去求最短路 矩阵距离 最小步数模型 状态本身是一个点,图本身作为 阅读全文
posted @ 2022-07-11 09:28 esico 阅读(19) 评论(0) 推荐(0) 编辑
摘要:题目链接 题目描述 总公司拥有M台 相同 的高效设备,准备分给下属的N个分公司。 各分公司若获得这些设备,可以为国家提供一定的盈利。盈利与分配的设备数量有关。 问:如何分配这M台设备才能使国家得到的盈利最大? 求出最大盈利值。 分配原则:每个公司有权获得任意数目的设备,但总台数不超过设备数M。 题目 阅读全文
posted @ 2022-06-12 15:50 esico 阅读(26) 评论(0) 推荐(0) 编辑
摘要:题目链接 题目描述 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出 字典序最小的方案。这里的字典序是指:所选物品的编号所构成的序列。物品的编号范围是 1…N 阅读全文
posted @ 2022-06-12 15:09 esico 阅读(92) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示