![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法错题本
文章平均质量分 56
我的算法错题本
Angindem
"我明白自己并不是多优秀,只是想在这世界的夹缝中生存着。"
展开
-
小丑的身份证和复印件 (BFS + Floyd)
本题链接:登录—专业IT笔试面试备考平台_牛客网 输出 12 思路: 根据题意,要求最短时间,实际上也可以理解为最短距离。 所以应该联想到有关最短距离的算法,在这里给出的 n,m是100,所以我们可以暴力求最短距离即可,身份碎片虽然分大小写,但是它们都是唯一的点,所以可以通过Floyd,记录每个点之间的最短距离,随后累加即可,其次这里的最短距离可以用BFS求得最短距离。注意一个细节,初始化无穷大的时候,尽量小一些,否则原创 2024-05-09 19:02:05 · 577 阅读 · 0 评论 -
Shuffle Cards (STL rope平衡树库)
本题链接:登录—专业IT笔试面试备考平台_牛客网 输出 2 3 4 1 5 样例2: 输入 输出 3 4 1 2 5 样例3: 输入 输出 3 4 1 5 2 思路: 这道题,其实就是个模拟题,根据题意。 第一行输入,n 为排列数 1~n,初原创 2024-05-08 11:40:07 · 1001 阅读 · 0 评论 -
独有病眼花,春风吹不落。 (二维坐标压缩成一个点,并查集)
本题链接:登录—专业IT笔试面试备考平台_牛客网 输出 8 根据题意,要求连接线段后,操作多少次,连接的线段闭合,如果操作完都没有闭合,说明平局输出“draw”。 在这里,我们可以将线段当作拥有两个点,当我们所画的线段两端的点是头和尾的时候,说明我们画闭合了。所以根据寻找当前点的根结点的时候就是头结点。我们很容易联想到并查集。 这里有个难题就是如何将二维坐标化成一个点的形式存在。我们可以通过映射的方式,由于原创 2024-05-07 21:25:08 · 682 阅读 · 0 评论 -
荷香堪筑梦,鸳鸯和月寻。(变相BFS搜索)
本题链接:登录—专业IT笔试面试备考平台_牛客网 输出 yes 思路: 根据题意,这里 1 s 可以移动多次,我们将每次可以移动避开雪的的位置存储起来,判断当移动到了顶部,说明完全可以避开雪。原创 2024-05-07 20:16:54 · 304 阅读 · 0 评论 -
探索的时光 (整数三分)
本题链接:登录—专业IT笔试面试备考平台_牛客网 输出 28 根据题意,已经给出了运算函数 当我们看到这些函数的时候,联想一下,它们的单调性,以及性质。这是一个抛物线,题目要求我们寻找最小值,说明就是要我们寻找极小值,寻找极值,我们使用三分。原创 2024-04-29 14:53:05 · 382 阅读 · 0 评论 -
P1883 【模板】三分 | 函数
本题链接:【模板】三分 | 函数 - 洛谷 输出 0.00000.5000 思路: 三分,就是将一段区间分成三等份,随后已知缩小中间的一段区间,以达到寻找极值问题。 三分,一般适用于,抛物线性质类的题目,以后遇到关于函数求值类的或者变相的函数求值类的题目,应该联想到三分。 具体的三分逻辑理解,可以参考网上的一些模拟视频:【4K算法详解】【二分与三分】从二分法到牛顿法,领着你的思维带你原创 2024-04-29 13:57:23 · 151 阅读 · 0 评论 -
C. Left and Right Houses
本题链接:Problem - C - Codeforces 思路: 根据题目意思。 寻找一条道路进行分割该字符串,设该道路分割位置为 i ,使得满足以下条件: 1、左侧有 个 0,右侧有 个 1 2、如果有多个位置满足 条件一,我们就要选择最小的位置 . 读懂意思后,暴力枚举一遍即可。通过前缀和记录每个位置 1 的数量,遍历判断以下即可。原创 2024-04-25 17:06:37 · 323 阅读 · 0 评论 -
C. Inhabitant of the Deep Sea
本题链接:Problem - C - Codeforces 输出 2 3 5 0 2 2 数学+模拟。 根据题意,一前一后的攻击,攻击k次后,总共击落舰队多少个。 如果单纯模拟,肯定会TLE,所以要加上数学推导一下。原创 2024-04-24 21:17:13 · 350 阅读 · 0 评论 -
逆数对(树状数组的方法)
逆序对的数量为: sum(2 ~ INF) = 0 + 0 + 1 + 1 + 0 + ... + 0 = 2。就开始询问有多少个逆序对,求总和(x + 1 ~ INF) 的数量是多少。我们可以通过计数的方式,log(n)的时间复杂度获取逆序对。根据题意,求逆序对总数。根据样例已知: 4 5 1 3 2。操作函数看我以往的笔记。原创 2024-04-23 20:53:04 · 442 阅读 · 0 评论 -
L2-1 堆宝塔
本题链接:PTA | 程序设计类实验辅助教学平台 输出 4 5 这是一道模拟题,需要有耐心读题,跟着题目走一遍,就可以了。原创 2024-04-16 18:12:01 · 205 阅读 · 0 评论 -
【模板】差分
本题链接:登录—专业IT笔试面试备考平台_牛客网 输出 5 6 1 一直以来,我总是不太理解差分和树状数组操作区别。 现在摸了一下开始有所理解了。 差分和树状数组的区别: 树状数组:可以边区间插入操作边查询。 差分:一系列区间操作后,最后确定结果序列 设原数组为 a差分数组为 b前缀和数组为 c这里要注意的是,操作差分的时候,+x 前后的关系差分 就是 差分原创 2024-04-16 12:01:11 · 458 阅读 · 0 评论 -
蓝桥杯2024年第十五届省赛真题-R 格式(高精度乘法 + 加法)
本题链接:蓝桥杯2024年第十五届省赛真题-R 格式 - C语言网 输出 13 根据题意,结合数据范围,这是一道模板的高精度乘以低精度问题。 题意是double 类型 d 与 2 的n 次幂相乘,最后四舍五入。 我们换一下视角,看作 对于double 类型 d ,与 n 个 2 相乘,最后四舍五入。 这样就很快解出答案了,就是对于double小数部分需要微调一下即可。原创 2024-04-15 21:47:11 · 1193 阅读 · 2 评论 -
BD202311夏日漫步(最少步数,BFS或者 Dijstra)
IOS;int _t = 1;solve();return 0;int n,ans;// g 记录连接线 cnt 记录可瞬移的点// BFS 求最短路q.pop();++i)if(!return 0;cin >> n;// 记录 所有点i < n;// 记录可瞬移的点// 小度可以正向或反向移动到相邻的格子++j)原创 2024-04-13 21:42:38 · 476 阅读 · 0 评论 -
小红不想做完全背包 (hard)(BFS最少操作)
本题链接:登录—专业IT笔试面试备考平台_牛客网 输出 1 根据题意,要求拿去物品数量的最小值,也可以看作是最少操作拿取的次数。 所以我们应该联想到 BFS 搜索,以后遇到最小值、最少值...这些,再看到数据范围,可以考虑一下 BFS。 这里我们定义一个 Pair 值,其中一个是操作次数,另一个是操作结果,随后用一个 ans[] 存储各个操作结果的次数。ans [ 下标 ] = 值 这里 ans 下原创 2024-04-08 12:26:39 · 315 阅读 · 0 评论 -
L2-036 网红点打卡攻略 ( 模拟题 )
本题链接:PTA | 程序设计类实验辅助教学平台 输出 3 5 11 根据题目意思模拟一遍就可以了。 根据数据范围N原创 2024-04-03 13:05:43 · 221 阅读 · 0 评论 -
L2-035 完全二叉树的层序遍历(完全二叉树+后序推出层序)
IOS;int _t = 1;solve();return 0;//递归边界,以及找到相应的根节点了。// 向上查找 L 左父结点// 向上查找 R 右父结点DFS(l);// 开始向上 L 查找DFS(r);// 开始向上 R 查找// 已经查找到 第 t 个结点,// 开始赋值相应层序遍历的 i 值为后序遍历的 a[t]值cin >> n;i原创 2024-04-03 11:27:02 · 905 阅读 · 0 评论 -
Overcooked!(并查集区间元素合并优化)
本题链接:登录—专业IT笔试面试备考平台_牛客网登录—专业IT笔试面试备考平台_牛客网登录—专业IT笔试面试备考平台_牛客网 输出 YES YES NO 根据题意,这是个模板的并查集,但是多了一个操作,就是合并区间多个元素为一个集合。 其中合并区间多个元素为一个集合的核心是,存一个区间合并的 ne 数组。初始化操作多个元素区间合并操作具体合并优化过程,跟着代码,在草稿纸上模拟走一遍就思路清晰了。原创 2024-03-27 21:00:36 · 302 阅读 · 0 评论 -
Shadow Tactics
本题链接: 输出 YES 根据题意,隼人的坐标是不会动的,并且士兵只能直线来回行动。 从上图,我们可以知道,最短距离路线所对应的某一个(x / y)下标,可以通过隼人的坐标获取,我们只需要判断另一个移动的 (x / y)下标即可。原创 2024-03-27 20:00:18 · 230 阅读 · 0 评论 -
二分专题1:寻找指定元素(整数查找)
2。转载 2023-08-15 14:28:24 · 45 阅读 · 0 评论 -
P3386 【模板】二分图最大匹配
本题链接:【模板】二分图最大匹配 - 洛谷 根据题目意思,我们由之前提及到过的二分图含义明确一下。 二分图就像是一个人群中的男女混合舞会,所有参与者可以分成两组:男生和女生。在这个舞会上,男生只和女生跳舞,而不和其他男生跳舞;女生也只和男生跳舞,而不和其他女生跳舞。没有两个男生或两个女生会成对跳舞。只存在一对一个的关系。 换句话说,如果一个图是二分图,就意味着可以将所有的点分成两组,使得同一组内的点之间没有直接相连原创 2024-02-27 17:40:25 · 389 阅读 · 0 评论 -
AcWing 860. 染色法判定二分图
int n,m;// 数组模拟链表// 链表头指针// 记录是否染色// color 状态 0 表示未染色// 1 表示染黑色// 2 表示染白色// 存储需染色结点// 枚举每个结点i原创 2024-02-27 11:14:36 · 337 阅读 · 0 评论 -
集合问题(并查集)
本题链接:登录—专业IT笔试面试备考平台_牛客网 这道题关键点在于。 当集合中有一个元素均存在于集合 A 和集合 B 的时候是 NO。 并且 的范围是 1 ~ 1e9 所以,当 >= max(a,b) 的时候也是 NO。 我们同时可以指定一个 元素范围外的 一个元素作为 根元素集合 A 其次,我们可以将 下标 作为对应的每一个元素,最后进行合并求结果即可。最后提交:原创 2024-02-01 23:39:43 · 536 阅读 · 0 评论 -
5407.管道 (二分+区间合并)
本题链接:5407. 管道 - AcWing题库 根据题目意思,给出 n 个阀门,其中 管道有 len 段,随后 n 个阀门对应的位置在 L 点,并且当 S 时刻阀门的水会放开, 其中 放开后 水在 ( ≥ )时刻会使得从第 − ( − ) 段到第 + ( − ) 段的传感器检测到水流。 问输出 全部段点感应到水流的 最早时间,这里 有可能出现同一时刻 水阀放水的过程,以及放水后 感应到的区域 部分同时感应,所以我们应该联想到 区间合并原创 2024-01-03 14:27:26 · 391 阅读 · 0 评论 -
摆玩具[算法赛](差分)
本题链接:用户登录 输出 8 由题意,这是一个递增的数组,其次要求最小的极差,对 数组 进行分成 k 个分段数组。 由于是一个递增的数组,且极差的求值,我们应该联想到 前缀和 或者 极差 的知识点。我们构造差分数组,求出相邻之间的差值,对差分数组进行排序,丢弃相应的 k 个极差最大的组,剩下的就是最小的极差了。原创 2023-10-26 10:27:01 · 91 阅读 · 0 评论 -
40. 到达目的地的最短距离(第四期模拟笔试)
链接:卡码网KamaCoder 输出 3 这道题是求最少步数,联想一下 BFS,BFS 操作可得这是一个正向的 BFS提交后我们可以发现:内存超限了部分测试数据,关键点在于 操作 3 中 x = x * 2 使得 当某个数值的时候 ,使用操作3后,有可能 x > n 不必要的数据存储在了 q 中,这就是正向 BFS 的一个小缺陷我们可以试一下 反向BFS,以 终点 为起步存储点,往 0 方向操作,此时 now 应该被整除的原创 2023-10-16 17:13:38 · 152 阅读 · 0 评论 -
7-16 城市间紧急救援 (综合最短路练习)
这道题是经典的综合最短路问题,综合了 三种最短路方法,1.求路径条数,2.最短路多边权问题,3.求最短路的路径。这里有个注意的点是,结点人数的的比较应该是更多更好。所以堆排序的时候,注意将结点人数总和多的排在前面。原创 2023-10-05 13:58:29 · 125 阅读 · 0 评论 -
E. Mishap in Club
数学贪心模拟思路,由于不知道在俱乐部的人数和在外面的人数,又要尽可能少的人数,那么定义两个变量,一个是里面的人数 in = 0,外面的人数 out = 0,然后根据记录变化,尽可能的少,进去的,可以是 外面进去的,出来的,可以是在里面的出来的,然后里面和外面的人数总的相加,就是尽可能少的人数。原创 2023-10-02 20:50:29 · 148 阅读 · 0 评论 -
C. Best Binary String
根据题意, 题目意思是 ‘?’ 字符 该替换何值,使得原字符串,最少操作 翻转任意区间,成升序字符串。有多个答案,打印任意一个即可。这里有多个答案,是因为,替换 ‘?’ 不同的字符,有相同的操作数,所以打印任意一个答案。 这是一个贪心题,我们根据题意,我们应该联想到,当原字符串中第一个字符是 ‘?’ 时,我们要最少操作数,就是不操作它这个字符,即刚开始碰到 '?' 时我们应该替换成 '0',使得它不被操作,当碰到不是 '?' 的时候,就记录相应的值。但是后面的该如何改变呢?要最少操作数,我们原创 2023-10-02 15:11:19 · 263 阅读 · 0 评论 -
B. Comparison String
由题意,条件是又因为要使用尽可能少的数字,这是一道贪心题,所以我们可以知道,当遇到符号相同的时候,肯定只能使用新的数字,即 使用的数字数量积累,累加 ++cnt,然后ans 取我们尽可能使用的数字数量 ans = max(ans,cnt)当遇到不同的符号的时候,我们可以用之前使用过的数字,避免数字数量的累加,即重回刚开始的数字, cnt = 1 数字积累量重置原创 2023-10-01 16:07:38 · 216 阅读 · 0 评论 -
C. MEX Repetition
从题目和样例中,我们可以知道,从一个数组中,按照包括0的自然数的顺序查找确实的一个顺序,然后按从左到右进行交换。想法和思路弄清楚后,暴力模拟肯定是不行的了,数据范围过大,k的数据范围是 1e9, n 的数据范围是 1e5,在加上 t 的数据范围 1e5,如果纯暴力,按照最坏的情况,时间复杂度大概是 10 的19次方。所以基本不可能的。 我们可以看一下样例,可以发现一个规律,那就是第一次缺少的包括0的自然数 x ,在输出样例中,会去掉前面或者后面,然后将该 x 放置前面或者后面。我们可以猜测,并原创 2023-09-30 11:21:52 · 1239 阅读 · 0 评论 -
C2. Powering the Hero (hard version)
贪心思维题,这道题要求的是一张一张的凑卡牌,凑到的是力量赋值卡就存储好,抽到 0 就是英雄卡,当我们存储中有力量赋值卡,就将该力量赋值给该英雄,并获得该英雄的战力,求最佳操作获得的最大战力总和是多少。 我们将每次抽到的力量赋值卡存储的时候,遇到英雄卡,就赋值给最大存储即可,而赋值卡值最小的放到后面,倘若遇到了英雄卡,也会将该最小力量赋值卡赋值给英雄的,倘若没遇到,相当于弃用掉。 所以我们用个优先队列存储并赋值即可。原创 2023-09-29 14:36:12 · 198 阅读 · 0 评论 -
A. Trust Nobody
这道题也是个思维题,关键在于这种问题是有多个答案的,所以我们输出其中一种答案即可,也可能无法确定的,就要输出 -1。 题目意思是,给出 n 个人,n 个人说有 aj 个人撒谎,问可以确定的可能撒谎人数是多少,如果无法确定,输出 -1。 我们假设共有 n 种情况,分别可能有 i (0原创 2023-09-28 12:51:09 · 1456 阅读 · 0 评论 -
C. Card Game
这里的题意就是, 当我们 i 取奇数的时候,可以获得该奇数 i 的值,并去掉当前卡牌。 当我们 i 取偶数的时候,去掉当前卡牌。 这里我们去掉当前卡牌后,后面的卡牌下标 i 就会变化,后面的 i 的奇偶性就会变化。 所以当我们一个一个从后面开始取数的时候,就可以巧妙的避开这些变化,之后就是贪心操作。原创 2023-09-27 20:59:27 · 191 阅读 · 0 评论 -
B. Sets and Union
这里题目的意思是,要求合并尽可能多的集合,使它的集合大小最大,但是不能等于全部集合的合并。 这里由于题目所给的范围较小,所以我们可以暴力枚举,其次,里面也有贪心的成分,这里我们换个思路,我们通过总的集合,根据总的集合中的某个元素,枚举不存在该元素的集合,并合并,就是不等于全部集合的合并,取个合并后的集合个数 max,就是答案。原创 2023-09-27 17:49:06 · 1933 阅读 · 0 评论 -
C. Make it Alternating
数学组合问题,在这里中要求 ans1 和ans2 两个答案,其中 ans1 表示最少操作次数,这是最容易求的,难点在 ans2 ,这里 ans2 是组合求总数的问题。其次,我们记录操作数,所求的答案它们的初始化,也是需要考虑的地方。第二个答案就是一个组合数学 1 2 还有 2 1 是两种不同的情况然后部分不同的情况也会造成总的也会有不同的情况比如 [12 12] [21 12] [12 21] [1 1 2 2] 等等等等原创 2023-09-27 09:42:06 · 209 阅读 · 0 评论 -
47. 参加科学大会(第六期模拟笔试)(最短路)
由题意,很明显这是一道最短路径问题,但是不同的是,这里没有给出边的长度,而是以结点权值的形式,变相的作为边长,这一我们应该注意的是,这里的意思为从 a 点到 b点所花时间为 b 即 g[a][b] = b ,从 b 点到 a 点所花时间为 a 即 g[b][a] = a 所以我们根据题意,更改一下Dijkstra模板函数即可。原创 2023-09-20 22:56:29 · 102 阅读 · 0 评论 -
B. 2D Traveling
根据题目意思,有三种情况, 第一种 起点以及终点都在 大城市 k 内,那么它们之间的票价就是 0 第二种 起点和终点都不在大城市内,那么我们先计算起点到终点之间的票价,再分别从大城市范围的诚实点中找到票价最低点,然后比较我们中间路径最短点的票价与我们直接起点到终点之间的票价,就是我们最低票价 第三种 起点与终点,任意一个是在大城市内,在这里,我们找到不在大城市内的往大城市范围的城市点中找到最短票价,与我们直接起点到终点之间的票价,就是我们最低票价。原创 2023-09-12 13:36:00 · 93 阅读 · 0 评论 -
26. 不相同的字符串(第一期模拟笔试)
这里的题目要求我们要最少操作删除次数,我们可以先统计每个字符个数,然后开始删除,每操作删除一次,就会产生一个新字符,ans += r[i] >> 1 就是我们操作次数,然后记得操作过后剩余的字符个数是多少,最后统计一下我们操作完成后,剩余的有多少个 0 位,然后判断我们 产生 ans 个字符后可不可以补完,不可以就累加我们之后继续多余的操作数,就是我们最少操作数。原创 2023-09-10 14:45:04 · 73 阅读 · 0 评论 -
D. Prefix Permutation Sums
数学问题,根据前缀和与 排列1 ~ n 之间的关系来推导。最后提交:原创 2023-09-14 13:40:45 · 71 阅读 · 0 评论 -
B Antiamuny wants to leaern binary search again
C/C++: 根据题意,暴力循环 l 到 r 一个样例肯定不会超时,但是这里有测试样例 t 就会导致超时,刚好题目已经给出了二分模板,我们可以根据二分模板,二分查找 l 和 r 中是否有 x 的 cnt 循环满足我们需要找的 cnt 即可原创 2023-09-09 14:00:01 · 95 阅读 · 0 评论