D. 双机巡检

    传统题 4000ms 256MiB

双机巡检

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

【题目描述】

环形展馆闭馆后,两台巡检机器人需要依次赶往系统指定的检查点.有时一个阶段只有一处故障,有时两处故障必须同时处理.

环形展馆中有 nn 个检查点,沿顺时针方向依次编号为 1,2,,n1,2,\ldots,n.检查点 nn 与检查点 11 相邻.

两台机器人初始分别位于检查点 11 和检查点 nn.它们之间没有区别,可以位于同一个检查点,也可以在移动过程中相遇或互相经过.

两点 x,yx,y 之间的移动距离定义为环上两条路径中较短一条的长度:

dis(x,y)=min(xy,nxy).\operatorname{dis}(x,y)=\min(|x-y|,n-|x-y|).

接下来依次进行 qq 个巡检阶段.第 ii 个阶段给出一个包含 cic_i 个检查点的集合 SiS_i,其中 ci{1,2}c_i\in\{1,2\}.在该阶段结束时,对于 SiS_i 中的每个检查点,都必须至少有一台机器人位于该处.

两台机器人可以在相邻阶段之间任意移动.一次移动的代价等于机器人经过的边数,一个方案的总代价等于两台机器人全部移动距离之和.

请计算完成所有巡检阶段所需的最小总代价.

【输入描述】

第一行输入两个整数 n,qn,q,分别表示检查点数量和巡检阶段数量.

接下来的 qq 行描述各个巡检阶段.每行首先输入一个整数 cic_i

  • 如果 ci=1c_i=1,随后输入一个整数 pip_i,表示 Si={pi}S_i=\{p_i\}
  • 如果 ci=2c_i=2,随后输入两个不同的整数 pi,rip_i,r_i,表示 Si={pi,ri}S_i=\{p_i,r_i\}

【输出描述】

输出一个整数,表示完成所有巡检阶段所需的最小总代价.


【样例 1】

【样例 1 输入】

8 4
1 3
1 7
2 2 6
1 4

【样例 1 输出】

7

【样例 1 解释】

一种最优方案如下:

  • 第一阶段,将位于 11 的机器人移动到 33,代价为 22
  • 第二阶段,将位于 88 的机器人移动到 77,代价为 11
  • 第三阶段,将位于 77 的机器人移动到 66,位于 33 的机器人移动到 22,总代价增加 22
  • 第四阶段,将位于 2266 的一台机器人移动到 44,总代价增加 22

总代价为 77


【样例 2】

【样例 2 输入】

1 3
1 1
1 1
1 1

【样例 2 输出】

0

【样例 3】

见选手目录下的 Data/sample3.inData/sample3.ans

该样例满足 n,q30n,q\le 30


【样例 4】

见选手目录下的 Data/sample4.inData/sample4.ans

该样例满足 n,q2000n,q\le 2000


【样例 5】

见选手目录下的 Data/sample5.inData/sample5.ans

该样例中所有阶段均满足 ci=2c_i=2


【样例 6】

见选手目录下的 Data/sample6.inData/sample6.ans

该样例中所有要求的检查点编号均属于 {1,n}\{1,n\}


【样例 7】

见选手目录下的 Data/sample7.inData/sample7.ans

该样例中所有阶段均满足 ci=1c_i=1


【样例 8】

见选手目录下的 Data/sample8.inData/sample8.ans

该样例无特殊性质.

【数据规模与约定】

对于所有测试数据,保证:

  • 1n,q3×1051\le n,q\le3\times10^5
  • ci{1,2}c_i\in\{1,2\}cinc_i\le n
  • 1pi,rin1\le p_i,r_i\le n
  • ci=2c_i=2 时,pirip_i\ne r_i
子任务编号 分数 特殊性质
11 1010 n,q30n,q\le30
22 2525 n,q2000n,q\le2000
33 1515 对所有阶段均有 ci=2c_i=2
44 1010 所有要求的检查点编号均属于 {1,n}\{1,n\}
55 1515 对所有阶段均有 ci=1c_i=1
66 2525 无特殊性质

【大样例下载链接】

点击下载本题选手目录

csp-s模拟赛8

未参加
状态
已结束
规则
OI
题目
4
开始于
2026-8-28 8:00
结束于
2026-8-28 13:00
持续时间
4 小时
主持人
参赛人数
7