摘要: 前置知识: 链式前向星初始化 深度优先搜索和广度优先搜索 如果你还不知道链式前向星,那么请看这篇文章,请务必搞懂它。 原题传送门 看到题解区没有关于链式前向星的题解,就准备来发一波! 思路分析 分析存储方法 在图中,最常见的存储方法是以下三种: 邻接矩阵 邻接表 链式前向星 现在我们就来逐一选择一下 阅读全文
posted @ 2023-09-10 14:12 群星之路 阅读(59) 评论(0) 推荐(0)
摘要: 一道纯粹的贪心题。 思路分析 通过观察,我们可以发现,每个瓶子所需要的射击次数的增长是与 \(x\) 密切相关的。 这样我们很容易想到,如果我们将耐久度大的瓶子放在后面射击,那么 \(x\) 就会较大,因而导致最终的射击次数变大。 说到这儿,思路已经显而易见了。我们可以对 \(a\) 数组根据耐久度 阅读全文
posted @ 2023-09-10 14:11 群星之路 阅读(12) 评论(0) 推荐(0)
摘要: 普通模拟的别的题解应该都有了,现在我来介绍一种不同寻常的偷懒方法! 思路分析 确定最大值 题目要我们求 \(2^m\) 次方,常规的方法是对于 \(m\) 一个一个试过去,最终找到答案。 但是,我们可以发现,\(m\) 不就是 \(\log_2 n\) 嘛!(不考虑偶数和小于的条件下) 所以我们可以 阅读全文
posted @ 2023-09-10 14:09 群星之路 阅读(10) 评论(0) 推荐(0)
摘要: 一道简单的模拟题尽管我花了好久才写出来。 思路分析 我们可以知道,如果想让背景为某个颜色,那么颜色前面的所有幕布都需要被拉起来,而这个颜色的幕布则需要被放下。 所以我们对于每次操作,只需检查一遍它前面的幕布和这块幕布的状况即可。 程序实现 #include <bits/stdc++.h> using 阅读全文
posted @ 2023-09-10 14:09 群星之路 阅读(10) 评论(0) 推荐(0)
摘要: 不可多得的小清新模拟题! 思路分析 题目中已经暗示地很明显了,只能对 \(x\) 进行操作使得 \(x\) 变成 \(p_x\)。 而我们现在可以操作的值唯独 \(s\),所以我们的思路就呼之欲出了。 我们重复将 \(s\) 迭代为 \(p_s\)。如果 \(s=t\),那么我们就找到了答案。如果 阅读全文
posted @ 2023-09-10 14:06 群星之路 阅读(7) 评论(0) 推荐(0)
摘要: 思路分析 因为最终要使得 \(a,b\) 相同,所以我们应该希望让相同的数字尽量相同。所以,我们需要先对 \(a\) 和 \(b\) 进行排序,这样子就可以使用双指针的方法来维护最终值了。 我们定义 \(l\) 指针指向 \(a_l\),\(r\) 指针指向 \(b_r\)。因为题目要求添加数字的次 阅读全文
posted @ 2023-09-10 14:05 群星之路 阅读(8) 评论(0) 推荐(0)
摘要: 思路分析 前置知识:排列是没有重复元素的! 猜想 我们可以进行一种猜想,对于 \(x\),输出: \[\begin{cases} x+1&x<N\\ 1&x=N \end{cases}\]将代码提交上去,我们可以发现这种猜想值正确的! 证明 但是作为一名合格的 OIer我们必须证明这种做法是正确的。 阅读全文
posted @ 2023-09-10 14:04 群星之路 阅读(7) 评论(0) 推荐(0)
摘要: 思路分析 答题思路 一道纯暴力题! 因为我们发现数据最大是 \(5\),而枚举全排列的时间复杂度为 \(\mathcal O(n!)\),对于这种极小的数据范围是丝毫不用顾虑的,因为我们只需要执行 \(120\) 次。 如何快速求出一个数组的全排列? 我们可以使用 dfs,一层一层获取这个数组的全排 阅读全文
posted @ 2023-09-10 14:03 群星之路 阅读(9) 评论(0) 推荐(0)
摘要: 思路分析 猜想 我们可以在题目中看出一下几个突破口: 能“看穿”的位置所对应的单位立方体是一定不存在的。 如果前视图的右上角的颜色 \(A\) 和顶视图的的右下角颜色 \(B\) 不同,那么对应的格子就一定不存在。 在删除这个立方体后,我们还可以发现,挖去立方体的左侧和 \(B\) 左侧的颜色不同。 阅读全文
posted @ 2023-09-10 14:01 群星之路 阅读(7) 评论(0) 推荐(0)
摘要: 思路分析 暴力枚举? 我们可以枚举每个数字变或不变,最后判断整个矩阵是否满足条件。但是,这样做最多需要枚举 \(2^{255}≈5\times10^{67}\) 中情况,是一定会超时的。 大眼观察 注意到 \(n\le15\),第一行只有不超过 \(2^{15}=32768\) 种可能,所以第一行的 阅读全文
posted @ 2023-09-10 13:50 群星之路 阅读(10) 评论(0) 推荐(0)
摘要: 思路分析 构造排列表 立方体只有 \(4\) 个,暴力法是可行的。但是如果我们要暴力,首先得清楚一个立方体到底有几种不同的旋转方式。 接下来,我们用“姿态”一词代替“旋转方法”。假设 \(6\) 个面的编号为 \(1\sim6\),从中选择一个面作为“顶面”,“顶面”的对面为“底面”。然后我们在剩下 阅读全文
posted @ 2023-09-10 13:49 群星之路 阅读(8) 评论(0) 推荐(0)
摘要: 思路分析 一道大模拟。 一共只有 \(34\) 种牌,因此可以一次判断是否“听”这些牌。比如,为了判断是否“听”一万,只需要判断自己拿到这张一万后能否可以继续和牌。这样,问题就转化成了给定 \(14\) 张牌,判断是否可以和牌。为此,我们可以递归求解:首先将两张牌作为“将”,然后每次选 \(3\) 阅读全文
posted @ 2023-09-10 13:48 群星之路 阅读(10) 评论(0) 推荐(0)
摘要: 思路分析 我们只需要找到左边第一个大于 \(0\) 的位置 \(l\) 与右边第一个大于 \(0\) 的位置 \(r\),输出 \(r-l+1\) 即可。 但是很坑的一点是,如果 \(∀i∈[1,n],a_i=0\),那么 \(l\) 和 \(r\) 会重合,代码会输出 \(1\)!所以,我们需要定 阅读全文
posted @ 2023-09-10 13:47 群星之路 阅读(15) 评论(0) 推荐(0)
摘要: 思路分析 一道很有洛谷个性的模拟签到题。 按照题意,我们只需读入 \(a,b,c,d,e\),然后对其进行求和,然后依次根据 洛谷咕值系统介绍 进行判断即可。 这样是不是太没有意思了?今天为大家带来一点干货作为福利! 介绍:accumulate() 函数! 简略分析:这个函数可以求出一段区间内的数字 阅读全文
posted @ 2023-09-10 13:46 群星之路 阅读(54) 评论(0) 推荐(0)