#P15688. Hunt猎捕

Hunt猎捕

A1. 猎捕(Hunt)

时间限制: 1.5 秒
内存限制: 1024 MB
来源: National Summer Tournament in Informatics, Plovdiv, 12--14 June 2026,Group A,11--12 年级
作者: Emil Indzhev

题目描述

Elmer Fudd 正在猎兔。更准确地说,和往常一样,他想抓住 Bugs Bunny。

Bugs 藏在一片环形森林中。我们把森林看成一条首尾相接的带子,分成 LL 个扇区,编号为 00L1L-1。对于 0i<L0\le i<L,扇区 ii 与扇区 (i+1)modL(i+1)\bmod L 相邻。

Elmer 知道,在第 00 天,Bugs 位于 NN 个不同扇区之一:

P0,P1,,PN1.P_0,P_1,\ldots,P_{N-1}.

此外,每天晚上,包括第 00 天晚上,Bugs 都会从当前扇区移动到一个相邻扇区:如果当前在 PP,则移动到 (P1)modL(P-1)\bmod L(P+1)modL(P+1)\bmod L。注意,他永远不会停在原地

Elmer 在第 HH 天早晨到达森林,其中 H>0H>0。从那以后,每天早晨,包括第 HH 天早晨,他都会在自己选择的一个扇区放置一个陷阱。如果 Bugs 任何时候出现在有陷阱的扇区中,无论是白天刚放下陷阱后就在该扇区,还是某天晚上移动进入该扇区,都会被抓住。

Elmer 的目标是保证迟早抓住 Bugs,并且希望使用尽可能少的陷阱。注意,Bugs 有可能在最后一个陷阱放下之后的某个更晚时间才被抓住;重要的是最终一定会被抓住。

请你编写程序 hunt,给定 L,HL,H 和可能的初始扇区列表 P0,,PN1P_0,\ldots,P_{N-1},求 Elmer 为了保证抓住 Bugs 所需的最少陷阱数。Elmer 每天至多放置一个陷阱。

实现细节

你需要实现如下函数:

long long solve(long long L, long long H, std::vector<long long> P);

参数含义如下:

  • LL:森林中的扇区数。
  • HH:Elmer 到达的日期,即他第一次放置陷阱的日期。
  • PP:Bugs 可能的初始扇区列表。

该函数在一次程序运行中会被调用恰好一次。函数需要返回一个整数:保证抓住 Bugs 所需的最少陷阱数。

约束条件

N=PN=|P|

  • 1N2×1061\le N\le 2\times 10^6
  • 1H10121\le H\le 10^{12}
  • 2L10152\le L\le 10^{15}
  • 0Pi<L0\le P_i<L
  • iji\ne j,则 PiPjP_i\ne P_j
  • NLN\le L

子任务

子任务 分值 依赖子任务 NN 其他限制
0 - - 样例测试
1 3 =1=1 Pi+2H+4N<LP_i+2H+4N<L
2 1 -
3 2\le 2 Pi+2H+4N<LP_i+2H+4N<L
4 1--3 -
5 4 1, 3 4\le 4 Pi+2H+4N<LP_i+2H+4N<L
6 1--5 -
7 1, 3, 5 15\le 15 Pi+2H+4N<LP_i+2H+4N<L
8 0--7 -
9 7 1, 3, 5, 7 100\le 100 Pi+2H+4N<LP_i+2H+4N<L
10 0--9 -
11 14 0--10 420\le 420
12 0--11 9000\le 9000
13 15 0--12 105\le 10^5
14 0--13 2×106\le 2\times 10^6

样例

样例 1

输入

1 7 1
1

输出

3

样例 2

输入

5 969 44
4 108 619 887 408

输出

237

样例解释

对于样例 1,N=1,L=7,H=1N=1,L=7,H=1,唯一可能的初始位置是 P0=1P_0=1

一种使用 33 个陷阱的最优方案如下:第 11 天在扇区 22 放陷阱,第 22 天在扇区 66 放陷阱,第 33 天在扇区 00 放陷阱。

过程如下:

  • 00 天晚上,Bugs 从 11 移动到 0022
  • 11 天早晨,Elmer 在 22 放陷阱。如果 Bugs 在 22,他会立刻被抓住;剩下需要考虑 Bugs 在 00 的情况。
  • 11 天晚上,Bugs 从 00 移动到 6611
  • 22 天早晨,Elmer 在 66 放陷阱。类似地,只剩下 Bugs 在 11 的情况需要考虑。
  • 22 天晚上,Bugs 从 11 移动到 0022。如果他移动到 22,会立即被已经放好的陷阱抓住;剩下只需考虑他移动到 00 的情况。
  • 33 天早晨,Elmer 在 00 放陷阱,这也是唯一剩余的可能位置。

因此 Elmer 可以保证抓住 Bugs。注意,在这个例子中 Bugs 最晚会在第 33 天被抓住,但题目只关心 Elmer 放置陷阱的天数。Bugs 也可能在最后一个陷阱放置后才被抓住。

本地 grader 输入输出格式

输入格式

  • 11 行:三个整数 N,L,HN,L,H
  • 22 行:NN 个整数 P0,P1,,PN1P_0,P_1,\ldots,P_{N-1}

输出格式

  • 11 行:调用 solve 后返回的值。