Guoxu_
Guoxu_
全部文章
题解
归档
标签
去牛客网
登录
/
注册
Guoxu_的博客
全部文章
/ 题解
(共10篇)
题解|[NOIP2002]选数
思路 先用线性筛得到所有可能用到的素质,再用DFS判断不同组合之和是否为素数。 代码实现 #include <bits/stdc++.h> using namespace std; using ll = long long; const int s = 5 * (int)1e6; v...
C++
深度优先搜索
素数
2024-02-21
0
399
题解|小喵觅食
思路 显然是图论问题,而看到最短距离就应该优先使用BFS。 先后用BFS计算人和猫到其各自范围中任意合法位置的最短距离。注意处于人移动范围的合法位置会由于障碍物'*'的阻碍无法到达,而猫的嗅觉范围可以无视障碍物到达,这一点在BFS的代码中是否将新位置加入队列中的判断条件上有所体现。 最后遍历两者都...
C++
广度优先搜索
图
2024-02-21
0
213
题解|有趣的区间
思路 显然,区间中只要包含一个奇数,其结果就会是奇数。 进一步思考,统计包含一个或以上奇数的区间的工作量大于统计只包含偶数的区间的工作量。 代码实现 #include <bits/stdc++.h> using namespace std; using ll = long long;...
C++
2024-02-21
0
259
题解|纪念品分组
思路 贪心思想,首先将纪念品价格排序,再尽量将最高价格与最低价格的纪念品组合。 代码实习 #include <bits/stdc++.h> using namespace std; using ll = long long; int main() { ios::sync_wi...
C++
贪心
2024-02-21
0
192
题解|子段和
思路 不满足条件的情况 存在元素为0。 不存在元素为0。这样思考,首先将数组排列,假设数组元素正负交汇处的正数和负数分别为,,而 + 是唯一能等于0的情况,如果此时存在一个元素,则可以将其插入,之间使数组满足条件。综上所述,如果数组只包含两个互为相反数的元素,则不满足条件。 代码实现 #i...
C++
2024-02-21
1
206
题解|华华给月月准备礼物
思路 显然问题的解具有单调性,若长度能满足要求,则也能满足要求。 因此我们可以使用二分法的方式来代替暴力枚举。可以确定解集的左右边界 , 。 我们使用二分搜索来搜索题解的右边界,其中细节不详细展开。 代码实现 #include <bits/stdc++.h> using name...
C++
二分查找
2024-02-21
0
230
题解|小红买基金
思路 首先根据收益和风险的限制筛选出能买的基金的数量。 则购买的方案总和为 。 在上一步的基础我们使用快速幂的方法计算。 代码实现 #include <bits/stdc++.h> using namespace std; using ll = long long; int ...
C++
快速幂
2024-02-21
0
319
题解|上升数组
思路 要使得整个数组的和最小,则应将0元素 的值改变为。 所以首先遍历数组按上述原则改变,再遍历数组检查是否严格上升,最后遍历数组输出和。 代码实现 #include <bits/stdc++.h> using namespace std; using ll = long long...
C++
2024-02-21
0
376
题解|Boss的礼物
思路 使用暴力枚举,对于每一件礼物都遍历其颜色,检查它是否还符合条件。 在上一步的基础进一步优化使用hash表来加速遍历颜色的过程。 代码实现 #include <bits/stdc++.h> using namespace std; using ll = long long; in...
C++
哈希表
2024-02-21
0
226
题解|跳跳棋
思路 要使得操作次数变短,则每次跳跃要尽量远。不难发现,每次让最左则的棋子跳跃即可。 设数轴上从左往右三颗棋子坐标分别为,则跳跃之后变为。 用一个循环数组保存三个棋子的坐标位置。每次跳跃后都比较最右侧棋子是否 。 代码实现 #include <bits/stdc++.h> using...
C++
贪心
2024-02-21
0
306