#P16582. [GKS 2016 #B] Watson and Intervals

[GKS 2016 #B] Watson and Intervals

题目描述

Sherlock 和 Watson 在编程课程中已经掌握了 C++ 语言的复杂性,因此他们开始研究算法问题。在今天的课堂上,老师介绍了合并一维区间的问题。给出了 NN 个区间,第 ii 个区间由闭端点 [Li,Ri][L_i, R_i] 定义,其中 LiRiL_i \le R_i

老师将一组区间的覆盖面积定义为至少出现在一个区间中的整数的个数。(形式化地说,若存在某个 jj 使得 LjpRjL_j \le p \le R_j,则整数 pp 对覆盖面积有贡献。)

现在,Watson 总是喜欢挑战 Sherlock。他要求 Sherlock 恰好移除一个区间,使得剩余区间的覆盖面积最小。请帮助 Sherlock 找出在恰好移除 NN 个区间中的一个之后,剩余区间的最小可能覆盖面积。

输入格式

每个测试用例由一行八个整数组成:NNL1L_1R1R_1AABBC1C_1C2C_2MM。其中 NN 是区间的数量,其余七个值是参数,你需要使用它们来生成其他区间,方法如下:

首先定义 x1=L1x_1 = L_1y1=R1y_1 = R_1。然后,使用下面的递推式生成 i=2i = 2NNxix_iyiy_i

  • $x_i = (A \times x_{i-1} + B \times y_{i-1} + C_1) \bmod M$。
  • $y_i = (A \times y_{i-1} + B \times x_{i-1} + C_2) \bmod M$。

对于所有 i=2i = 2NN,我们定义 Li=min(xi,yi)L_i = \min(x_i, y_i)Ri=max(xi,yi)R_i = \max(x_i, y_i)

输出格式

对于每个测试用例,输出一行,格式为 Case #x: y,其中 xx 是测试用例编号(从 11 开始),yy 是在恰好移除一个区间之后,剩余所有区间的最小可能覆盖面积。

3
1 1 1 1 1 1 1 1
3 2 5 1 2 3 4 10
4 3 4 3 3 8 10 10
Case #1: 0
Case #2: 4
Case #3: 9

提示

在样例 11 中,使用生成方法得到的区间集合为:{[1,1]}\{[1, 1]\}。移除唯一的区间后,覆盖面积为 00

在样例 22 中,使用生成方法得到的区间集合为:{[2,5],[3,5],[4,7]}\{[2, 5], [3, 5], [4, 7]\}。移除第一个、第二个或第三个区间后,剩余区间的覆盖面积分别为 556644

在样例 33 中,使用生成方法得到的区间集合为:{[3,4],[1,9],[0,8],[2,4]}\{[3, 4], [1, 9], [0, 8], [2, 4]\}。移除第一个、第二个、第三个或第四个区间后,剩余区间的覆盖面积分别为 101099991010

限制条件

1T501 \le T \le 50

0L1R11090 \le L_1 \le R_1 \le 10^9

0A1090 \le A \le 10^9

0B1090 \le B \le 10^9

0C11090 \le C_1 \le 10^9

0C21090 \le C_2 \le 10^9

1M1091 \le M \le 10^9

小数据集(测试集 1 – 可见)

1N10001 \le N \le 1000

大数据集(测试集 2 – 隐藏)

1N5×105 (500000)1 \le N \le 5 \times 10^5\ (500000)

翻译由 DeepSeek V4 Pro 完成