- 题意:给定 \(k\) 个非空的多重集合,每个多重集合只包含绝对值不超过 \(10^9\) 的整数。需要从每个多重集合中选择一个数字,组成一个长度为 \(k\) 的数组 \((a_1,a_2,…,a_k)\)。
设 \(d=\max(a_1,a_2,…,a_k)−\min(a_1,a_2,…,a_k)\)。请计算最小的 \(d\)。
- 题解:首先将元素的值 \(x\) 以及所属集合的编号 \(y\) 作为二元组 \((x,y)\) 存入数组,然后按照 \(x\) 升序排列, 之后使用双指针扫描数组(尺取法),当区间内出现了所有编号时更新答案的 \(\min\)。
- 代码
- 题意:我看不懂。
- 题解:根据样例出结论,记得特判。
- 代码
- 题意:游戏在一个\((n+2)\times (m+2)\) 棋盘上进行,棋盘中间的 \(n \times m\) 位置各有一个棋子。
每次,你可以选择一个棋子,然后选择上、下、左或右四个方向中的一个。将所选棋子沿所选方向从原始位置移动一个网格。除了上述要求之外,还必须满足以下条件:原始位置和目标之间必须有一个棋子,井且目标位置上不能有棋子。所有位置都必须在棋盘上。
移动后,中间位置上的棋子将被拿走,每次移动后,棋盘上将移走一个棋子。给出 \(n,m\),问棋盘剩下的最少棋子数量是多少?
- 题解:
打表看出结果,有以下四种情况
- 如果 \(n = 1\),答案为 \(\cfrac{m+1}{2}\)
- 如果 \(m = 1\),答案为 \(\cfrac{n+1}{2}\)
- 如果 \(n \times m \pmod 3 \equiv 0\),答案为 \(2\)
- 如果都不满足,答案为 \(1\)
- 代码
- 题意:现在有一个有向图 \(G=(V,E)\),有 \(n\) 个顶点和 \(m\) 条边(图中不保证连通)。你需要计算最小长度的环的长度。同时,在此基础上,你还需要计算最小长度的环的数量 \(\bmod 998244353\)。( 图中没有重边和自环)
- 题解:数据太小,用两个
floyd
来分别计算环的长度环的数量,还要注意预处理。
- 代码
- 题意:有 \(n\) 块石头。刘泷心和潘奕帆轮流挑选,刘泷心先开始。每个人每次只能拿一块石头,直到所有的石头都被拿走。每块石头有两个属性,\(A_i\) 和 \(B_i\)。刘泷心拿一块石头获得 \(A_i\) 分,潘奕帆拿一块石头获得 \(B_i\) 分。刘泷心和潘奕帆都希望使自己的分数减去对方的分数尽可能大。问分数之差是多少?
- 题解:考虑转化一下问题,假如一开始所有石子全在潘奕帆手里,那么题中轮到刘泷心取时就拿走一个潘奕帆手中的石子,轮到潘奕帆取时潘奕帆就藏起来一个石子不让刘泷心拿,这样显然与之前的问题等价。 然后刘泷心取时自己获得 \(A_i\) 的分数,潘奕帆失去 \(B_i\) 的分数,相当于拉开了 \(A_i + B_i\) 点分数差,所以刘泷心一定会优先取 \(A_i + B_i\) 最大的石子,而潘奕帆也会优先藏住 \(A_i + B_i\) 最大的石子,所以只需要按 \(A_i + B_i\) 排序再轮流按顺序取即可。
- 代码
posted @
2024-08-23 15:58
liukejie
阅读(
6)
评论()
编辑
收藏
举报