摘要: 本题做法 DFS。 思路 在主函数中枚举开始挖的地窖,然后在 DFS 途中不断更新答案及路径,最后输出即可。 代码 #include<bits/stdc++.h> using namespace std; const int INF=0x3f3f3f3f; const double EPS=1e-8 阅读全文
posted @ 2025-07-06 18:44 EnjoySilence 阅读(102) 评论(0) 推荐(0)
摘要: rt,我是一名来自厦门的六年级OIer(但好像不是很OI) 今年只报了J组(有点后悔,S组看起来初赛也挺简单的) 赛前 6:00 起床。 6:30 吃完早饭(但在路上紧张吐了555),出发去英才学校考场。 7:40 到达考场,等了10分钟左右进考场啦。 赛中 8:00 试机没啥好说的。 8:29 发 阅读全文
posted @ 2025-06-27 13:23 EnjoySilence 阅读(31) 评论(0) 推荐(0)
摘要: 本题做法 数学。 思路 这题需要把上下界 \(L\) 和 \(R\) 分成 2 种情况讨论。 情况 1:\(R-L<n\) 当这种情况时,代表 \(L\) 和 \(R\) 并没有完全覆盖 1 个以上的 2 个相邻 \(n\) 的倍数之间的区间,当发生这种情况时,又要分成 2 种情况来讨论。 情况 1 阅读全文
posted @ 2025-06-27 13:21 EnjoySilence 阅读(136) 评论(0) 推荐(0)
摘要: 本题做法 数学。 思路 记 \(n=pq\) 为式 1,\(ed=(p-1)(q-1)+1\) 为式 2。 将式 2 展开,得到 \(ed=pq-p-q+2\),移项得到 \(p+q=pq-ed+2=n-ed+2\),正好是数据范围中定义的 \(m\)。 这样,我们就得到了 2 个式子: \[pq= 阅读全文
posted @ 2025-06-26 13:52 EnjoySilence 阅读(125) 评论(0) 推荐(0)
摘要: 本题做法 前缀和思想、模拟和贪心。 思路 定义一个数组 \(pre[i]\) 表示油价数组 \(a\) 中 \(a[1]\sim a[i]\) 中的最小油价,递推公式为 \(pre[i]=\min\{pre[i-1], a[i]\}(i>1),pre[1]=a[1]\)。遍历距离数组 \(v\) 的 阅读全文
posted @ 2025-06-24 20:22 EnjoySilence 阅读(165) 评论(0) 推荐(0)
摘要: 题外话 本题属于赛后补题系列,以后我会陆陆续续在这个系列中更新曾经比赛中未做出来的题。 本题做法 排序,贪心,差分。 思路 这题中每一个点的覆盖方式可以看做 2 种情况: 士兵一开始就部署在这个点上,不影响体力消耗。 士兵从相邻的 2 个点之一巡逻而来,体力消耗为 2 个点距离这个点的距离。 我们要 阅读全文
posted @ 2025-05-20 22:10 EnjoySilence 阅读(138) 评论(0) 推荐(0)
摘要: 本题做法 Dijkstra最短路+离散化思想。 思路 这其实是一道 Dijkstra 最短路的裸题,只需要对于每一次询问做一次 Dijkstra 然后判断输出即可。 这题有意思的点在于它的编号不是数字而是字符串,我们在这种情况下可以使用离散化思想,将每一个字符串通过 map 映射到一个唯一的数字上, 阅读全文
posted @ 2025-05-14 22:47 EnjoySilence 阅读(45) 评论(0) 推荐(0)
摘要: 本题做法 Floyd 弗洛伊德最短路算法。 思路 求全源最短路,再输出 \(g[1]][n]\) 即可。 代码 #include<bits/stdc++.h> using namespace std; const int INF=0x7fffffff; const double EPS=1e-8; 阅读全文
posted @ 2025-05-11 21:13 EnjoySilence 阅读(36) 评论(0) 推荐(0)
摘要: 本题做法 DFS+剪枝。 思路 \(30pt\):朴素 DFS 定义 DFS 函数为:void dfs(int x,int y,int t),其中 \(x\) 和 \(y\) 为当前搜索的坐标,\(t\) 代表当前要走第几步。 DFS 函数主体内每次都根据当前方向一直走,直到走到墙壁或尽头,则退出函 阅读全文
posted @ 2025-04-21 19:23 EnjoySilence 阅读(42) 评论(0) 推荐(0)
摘要: 本题做法 位运算。 思路 这题的数据范围使用 int 存储不下,得用 unsigned int。 读入后,我们就要开始考虑如何获取高低位的问题了。 我们都知道,C++ 中的右移运算是可以将一个正整数的二进制右移一位的,我们要忽略后 16 位,我们就可以通过 n>>16 获取高位。 那怎么获取低位呢? 阅读全文
posted @ 2025-04-10 12:53 EnjoySilence 阅读(129) 评论(0) 推荐(0)