摘要: 本题做法 数学。 思路 记 \(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 阅读(107) 评论(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 阅读(139) 评论(0) 推荐(0)
摘要: 题外话 本题属于赛后补题系列,以后我会陆陆续续在这个系列中更新曾经比赛中未做出来的题。 本题做法 排序,贪心,差分。 思路 这题中每一个点的覆盖方式可以看做 2 种情况: 士兵一开始就部署在这个点上,不影响体力消耗。 士兵从相邻的 2 个点之一巡逻而来,体力消耗为 2 个点距离这个点的距离。 我们要 阅读全文
posted @ 2025-05-20 22:10 EnjoySilence 阅读(122) 评论(0) 推荐(0)
摘要: 本题做法 Dijkstra最短路+离散化思想。 思路 这其实是一道 Dijkstra 最短路的裸题,只需要对于每一次询问做一次 Dijkstra 然后判断输出即可。 这题有意思的点在于它的编号不是数字而是字符串,我们在这种情况下可以使用离散化思想,将每一个字符串通过 map 映射到一个唯一的数字上, 阅读全文
posted @ 2025-05-14 22:47 EnjoySilence 阅读(42) 评论(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 阅读(32) 评论(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 阅读(35) 评论(0) 推荐(0)
摘要: 本题做法 位运算。 思路 这题的数据范围使用 int 存储不下,得用 unsigned int。 读入后,我们就要开始考虑如何获取高低位的问题了。 我们都知道,C++ 中的右移运算是可以将一个正整数的二进制右移一位的,我们要忽略后 16 位,我们就可以通过 n>>16 获取高位。 那怎么获取低位呢? 阅读全文
posted @ 2025-04-10 12:53 EnjoySilence 阅读(110) 评论(0) 推荐(0)
摘要: 本题做法 二分,贪心。 思路 二分答案,每次使用 \(check\) 函数检验。 \(check\) 函数:定义 2 个变量 \(now\) 和 \(nxt\),分别代表当前快乐值以及下一块要吃的巧克力。从 1 遍历到 \(d\),每次先将 \(now\) 除以 2,若 \(now<mid\),则一 阅读全文
posted @ 2025-04-09 13:33 EnjoySilence 阅读(86) 评论(0) 推荐(0)
摘要: 本题做法 二分+优先队列。 思路 这题有几个坑点: 二分的 \(l,r\) 最好使用 unsigned long long 类型,以及需要特判答案可能是 0 的情况。 二分开始时 \(r\) 设置成 \(1\text e18\) 会被卡常,最好的方法是设置成 \(\max(s,len)\)。 二分答 阅读全文
posted @ 2025-04-08 22:21 EnjoySilence 阅读(56) 评论(0) 推荐(0)
摘要: 本题做法 二分,贪心。 思路 我们可以二分最大化答案 \(x\),每次使用 \(check\) 函数测试当前二分的答案是否正确。 \(check\) 函数:定义变量 \(cnt\) 和 \(nxt\),分别代表当前答案可以放置的牛数量以及下一个符合当前答案的位置。初始时,\(cnt=1,nxt=a[ 阅读全文
posted @ 2025-04-08 18:52 EnjoySilence 阅读(85) 评论(0) 推荐(0)