121 lines
2.0 KiB
Markdown
121 lines
2.0 KiB
Markdown
# 区间2段覆盖
|
||
|
||
## 题目描述
|
||
|
||
有 $n$ 个村庄坐落在数轴上,坐标为 $x[1...n]$。村庄之间有 $n-1$ 条道路,其中有些道路是土路,有些是高速公路。具体地,第 $i$ 个村庄和第 $i+1$ 个村庄之间只有一条道路,要么是土路、要么是高速公路,并且输入会告诉所有 $n-1$ 条道路的种类。
|
||
|
||
现在有 $k(k\le 2)$ 个铺路计划,每个铺路计划可以在数轴上 **任意选择一段长度$\le m$** 的区间 $[l,r]$,将其中间全部变成高速公路。注意区间端点可以任意选择,可以选在村庄处、村庄之间,甚至可以是小数。
|
||
|
||
请问该如何铺路,使得从 $x[1]$ 走到 $x[n]$ 路径上的土路总长度最小。
|
||
|
||
## 输入格式
|
||
|
||
第一行1个整数 $T$,代表有 $T$ 组数据
|
||
|
||
每组数据第一行 3 个整数 $n,k,m$
|
||
|
||
第二行 $n$ 个整数 $x[1,2,...,n]$,保证 $x[1]=0, x[i-1]\le x[i]$
|
||
|
||
第三行 1 个长度 $n-1$ 的 `01`字符串,代表 $n-1$ 条路的种类,`0` 代表高速公路,`1` 代表土路。
|
||
|
||
## 输出格式
|
||
|
||
输出 $T$ 行,对于每组数据输出1个整数代表答案
|
||
|
||
## 自检样例
|
||
### 输入
|
||
```
|
||
1
|
||
2 1 2
|
||
2 3
|
||
0
|
||
|
||
```
|
||
### 输出
|
||
```
|
||
0
|
||
```
|
||
|
||
## 样例 #1
|
||
|
||
### 样例输入 #1
|
||
|
||
```
|
||
5
|
||
3 2 13
|
||
0 6 80
|
||
11
|
||
7 2 11
|
||
0 50 80 83 86 97 97
|
||
111011
|
||
2 2 43
|
||
0 83
|
||
1
|
||
9 2 47
|
||
0 26 34 40 71 75 79 98 99
|
||
11111101
|
||
10 2 36
|
||
0 14 28 29 30 37 55 64 65 81
|
||
011101000
|
||
```
|
||
|
||
### 样例输出 #1
|
||
|
||
```
|
||
54
|
||
72
|
||
0
|
||
1
|
||
0
|
||
```
|
||
|
||
## 样例 #2
|
||
|
||
### 样例输入 #2
|
||
|
||
```
|
||
2
|
||
5 2 3
|
||
0 1 2 3 5
|
||
1011
|
||
4 2 3
|
||
0 1 5 6
|
||
111
|
||
```
|
||
|
||
### 样例输出 #2
|
||
|
||
```
|
||
0
|
||
0
|
||
```
|
||
|
||
## 样例 #3
|
||
|
||
### 样例输入 #3
|
||
|
||
```
|
||
见下发样例
|
||
```
|
||
|
||
### 样例输出 #3
|
||
|
||
```
|
||
|
||
```
|
||
|
||
## 提示
|
||
|
||
对于100%的数据,$1\le n\le 50000, 0\le m,x[i]\le 10^9,1\le T\le 100$
|
||
|
||
subtask1(20pts):$n\le 500,m,x[i]\le 10^5,k=1$
|
||
|
||
subtask2(20pts):$n\le 500,m,x[i]\le 10^5,k=2$
|
||
|
||
subtask3(20pts):$n\le 50000,m,x[i]\le 10^9,k=1$
|
||
|
||
subtask4(40pts):$n\le 50000,m,x[i]\le 10^9,k=2$
|
||
|
||
|
||
|
||
**【注意】请使用快速的读入方式** |