合肥市第38届信息学竞赛(2021年)
题目描述
一条道路上有很多从 1 开始依次编号的老鼠喜爱的美食,每种美食数量无限多。老鼠们随机出现在任意一个美食旁,接着依次尝试美食。要找到哪两种相邻的美食被老鼠们尝试的次数最多,需从第一次出现某个美食开始,一直尝试到下一个美食为止。保证每只老鼠出现和停止的美食编号都不一样,最后输出最多的尝试次数。
输入描述
有 n+1 行,第一行表示老鼠数量 n,
接下来的每一行都包含两个数,一个数表示老鼠第一次出现的美食编号,另一个数表示老鼠停止的美食编号。
输出描述
一行,一个正整数,表示最多的次数。
样例输入
3 1 4 2 5 3 7
样例输出
数据范围及提示 Data Size & Hint
2 小于等于 n 且 n 小于等于某个数,美食的种类能够确保在 int 类型的范围之内,每一只老鼠出现的美食编号与停止时的美食编号都不一样。
样例解释:
有 3 只老鼠。第一只老鼠依次尝试了 1 种美食、2 种美食、3 种美食、4 种美食;第二只老鼠依次尝试了 2 种美食、3 种美食、4 种美食、5 种美食;第三只老鼠依次尝试了 3 种美食、4 种美食、5 种美食、6 种美食、7 种美食。其中 3 种美食和 4 种美食相邻,且被尝试了 3 次。
这题使用了差分的思想,使计算更快捷。
上代码:
#include
#include
using namespace std;
struct MOUSE {
int bh, f;
}a[20005];
bool cmp(MOUSE x, MOUSE y) {
if (x.bh != y.bh) {
return x.bh < y.bh;
工作时间:8:00-18:00
电子邮件
扫码二维码
获取最新动态