310358: CF1821D. Black Cells
Description
You are playing with a really long strip consisting of $10^{18}$ white cells, numbered from left to right as $0$, $1$, $2$ and so on. You are controlling a special pointer that is initially in cell $0$. Also, you have a "Shift" button you can press and hold.
In one move, you can do one of three actions:
- move the pointer to the right (from cell $x$ to cell $x + 1$);
- press and hold the "Shift" button;
- release the "Shift" button: the moment you release "Shift", all cells that were visited while "Shift" was pressed are colored in black.
Your goal is to color at least $k$ cells, but there is a restriction: you are given $n$ segments $[l_i, r_i]$ — you can color cells only inside these segments, i. e. you can color the cell $x$ if and only if $l_i \le x \le r_i$ for some $i$.
What is the minimum number of moves you need to make in order to color at least $k$ cells black?
InputThe first line contains a single integer $t$ ($1 \le t \le 10^4$) — the number of test cases.
The first line of each test case contains two integers $n$ and $k$ ($1 \le n \le 2 \cdot 10^5$; $1 \le k \le 10^9$) — the number of segments and the desired number of black cells, respectively.
The second line contains $n$ integers $l_1, l_2, \dots, l_n$ ($1 \le l_1 < l_2 < \dots < l_n \le 10^9$), where $l_i$ is the left border of the $i$-th segment.
The third line contains $n$ integers $r_1, r_2, \dots, r_n$ ($1 \le r_i \le 10^9$; $l_i \le r_i < l_{i + 1} - 1$), where $r_i$ is the right border of the $i$-th segment.
Additional constraints on the input:
- every cell belongs to at most one segment;
- the sum of $n$ doesn't exceed $2 \cdot 10^5$.
For each test case, print the minimum number of moves to color at least $k$ cells black, or $-1$ if it's impossible.
ExampleInput4 2 3 1 3 1 4 4 20 10 13 16 19 11 14 17 20 2 3 1 3 1 10 2 4 99 999999999 100 1000000000Output
8 -1 7 1000000004Note
In the first test case, one of the optimal sequences of operations is the following:
- Move right: pointer is moving into cell $1$;
- Press Shift;
- Release Shift: cell $1$ is colored black;
- Move right: pointer is moving into cell $2$;
- Move right: pointer is moving into cell $3$;
- Press Shift;
- Move right: pointer is moving into cell $4$;
- Release Shift: cells $3$ and $4$ are colored in black.
In the second test case, we can color at most $8$ cells, while we need $20$ cell to color.
In the third test case, one of the optimal sequences of operations is the following:
- Move right: pointer is moving into cell $1$;
- Move right: pointer is moving into cell $2$;
- Move right: pointer is moving into cell $3$;
- Press Shift;
- Move right: pointer is moving into cell $4$;
- Move right: pointer is moving into cell $5$;
- Release Shift: cells $3$, $4$ and $5$ are colored in black.
Input
题意翻译
在一条数轴上有无穷个点,下标为 $0, 1, 2, \ldots$,初始时每个点都是白色的。 你控制着一个机器人,初始时机器人位于坐标为 $0$ 的那个点。 机器人有两种状态:激活状态 和 非激活状态。 当处于激活状态时,机器人所在的点都会被染成黑色。 处于非激活状态时,机器人所在的点不会被染成黑色。 初始时机器人处于非激活状态。 你可以对这个机器人进行若干次操作,操作分为三种类型。每一次操作,你可以选择如下三种操作之一执行: - 将机器人的位置像数轴的正方向移动一个单位(即:若当前机器人在坐标 $x$,则执行一次该操作后机器人将移动到坐标 $x+1$ 的那个点); - 激活机器人:该操作只有当机器人处于非激活状态时才能执行,执行该操作后机器人将变为 激活状态; - 撤销激活机器人:该操作只有当机器人处于激活状态时才能执行,执行该操作后机器人将变为 非激活状态。 有 $n$ 个区间,第 $i$ 个区间用 $[l_i, r_i]$ 表示。 你需要使用最少的操作次数,将至少 $k$ 个点染成黑色,但是有一个限制,就是:这些染成黑色的点必须包含在至少一个给定的区间中,这也就是说,如果你要将坐标为 $x$ 的那个点染成黑色,则必须保证存在一个 $i(1 \le i \le n)$ 满足 $l_i \le x \le r_i$。 同时,本题也要求操作结束时机器人恢复到非激活状态(这也就意味着最少操作次数对应的最后一次操作是 _撤销激活机器人_)。 问:至少需要进行几次操作能够使至少 $k$ 个点被染成黑色,且最终机器人处于非激活状态?by. quanjunOutput
在一步中,你可以执行以下三个操作之一:
1. 将指针向右移动(从单元格x移动到单元格x+1);
2. 按下并保持“Shift”按钮;
3. 释放“Shift”按钮:当你释放“Shift”时,所有在“Shift”按下时访问过的单元格都会被涂成黑色。
目标是将至少k个单元格涂成黑色,但有一个限制:给你n个段[l_i, r_i],你只能在这些段内涂色,即你只能涂色单元格x,当且仅当对于某个i,l_i <= x <= r_i。
问你需要多少步才能将至少k个单元格涂成黑色?
输入数据格式:
第一行包含一个整数t(1 <= t <= 10^4)——测试用例的数量。
每个测试用例的第一行包含两个整数n和k(1 <= n <= 2 * 10^5;1 <= k <= 10^9)——段的数量和期望的黑色单元格数量。
第二行包含n个整数l_1, l_2, ..., l_n(1 <= l_1 < l_2 < ... < l_n <= 10^9),其中l_i是第i个段的左边界。
第三行包含n个整数r_1, r_2, ..., r_n(1 <= r_i <= 10^9;l_i <= r_i < l_{i+1} - 1),其中r_i是第i个段的右边界。
输出数据格式:
对于每个测试用例,输出将至少k个单元格涂成黑色所需的最小步数,如果不可能,则输出-1。题目大意:给定一个由10^18个白色单元格组成的非常长的条带,从左到右编号为0, 1, 2等。你控制一个特殊的指针,初始位于单元格0中。你还有一个“Shift”按钮可以按下并保持。 在一步中,你可以执行以下三个操作之一: 1. 将指针向右移动(从单元格x移动到单元格x+1); 2. 按下并保持“Shift”按钮; 3. 释放“Shift”按钮:当你释放“Shift”时,所有在“Shift”按下时访问过的单元格都会被涂成黑色。 目标是将至少k个单元格涂成黑色,但有一个限制:给你n个段[l_i, r_i],你只能在这些段内涂色,即你只能涂色单元格x,当且仅当对于某个i,l_i <= x <= r_i。 问你需要多少步才能将至少k个单元格涂成黑色? 输入数据格式: 第一行包含一个整数t(1 <= t <= 10^4)——测试用例的数量。 每个测试用例的第一行包含两个整数n和k(1 <= n <= 2 * 10^5;1 <= k <= 10^9)——段的数量和期望的黑色单元格数量。 第二行包含n个整数l_1, l_2, ..., l_n(1 <= l_1 < l_2 < ... < l_n <= 10^9),其中l_i是第i个段的左边界。 第三行包含n个整数r_1, r_2, ..., r_n(1 <= r_i <= 10^9;l_i <= r_i < l_{i+1} - 1),其中r_i是第i个段的右边界。 输出数据格式: 对于每个测试用例,输出将至少k个单元格涂成黑色所需的最小步数,如果不可能,则输出-1。