停车桩按给定排列依次唤醒。第一次唤醒免费;之后若左右相邻桩已有在线的,则免费,否则消耗一次独立调度。
顺序固定,答案也确定:用布尔数组标记已在线的桩(两端加哨兵)。从左到右扫描:
共享单车停车场有编号 1 到 n 的 n 个停车桩,最初全部离线。调度序列 a 是长度为 n、元素两两不同的排列,表示按时间依次唤醒这些桩。第一次唤醒可以免费完成;之后唤醒 ai 时,若存在已在线且编号满足 ∣ai−x∣=1 的桩 x,则可沿相邻线路免费上线,否则必须消耗 1 次独立调度。必须按给定顺序唤醒全部停车桩,并使独立调度次数尽可能少。请输出该最少次数。
约束:测试组数不超过 10000;单组桩数不超过 200000;单个文件中所有 n 之和不超过 200000;a 是 1 到 n 的排列。
第一行一个整数 t,表示测试组数。
每组数据:第一行一个整数 n;第二行 n 个两两不同的整数 a1,a2,…,an。
保证 1≤t≤10000,1≤n≤200000,1≤ai≤n,且单个测试文件中所有 n 之和不超过 200000。
对每组数据输出一行一个整数,表示最少独立调度次数。
输入
3
1
1
4
2 4 1 3
6
1 3 5 2 4 6
输出
0
1
2
说明
三组:
0 次;4 时与已亮的 2 不相邻,点火 1 次,其余可衔接;3、5 时各点火一次,共 2 次。输入
1
5
4 2 5 1 3
输出
1
说明
顺序 4,2,5,1,3:首次点亮 4 免费;点亮 2 时与 4 不相邻,点火 1 次;随后 5 与 4 相邻,1、3 也可衔接。答案为 1。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册