P11914 [PA 2025] 上班 / Praca
题目背景
PA 2025 R1B.
题目描述
一天被分为 $n$ 段时间。每段时间可能会有以下三种事情:
1. 举行了一场线下会议;
2. 举行了一场线上会议;
3. 空闲。
每段时间内,Bajtazar 所在的地点可能有三种:
- 在家:
- 在家里无法参加线下会议(被迫翘掉会议)。
- 在家里**可以**参加线上会议(也可以选择翘掉会议做题)。
- 在家里可以做题。
- 在公司:
- 在公司**必须**参加线下会议。
- 在公司**必须**参加线上会议。
- 在公司**无法**做题。
- 在通勤:
- 通勤时无法参加线下会议(被迫翘掉会议)。
- 通勤时无法参加线上会议(被迫翘掉会议)。
- 通勤时无法做题。
一天开始时(第 $1$ 段时间初),Bajtazar 在家里。一天结束时(第 $n$ 段时间末),Bajtazar 必须回到家中。
Bajtazar 可以选择去办公室**至多一次**。从家到办公室、从办公室回家都要通勤。
通勤会消耗 $t$ 段时间,即如果选择在第 $i$ 段时间初开始通勤,在第 $(i+t-1)$ 段时间末会结束通勤。
Bajtazar 想打一辈子算法竞赛,所以他想抽出尽可能多的时间做题。但是他最多能翘掉 $k$ 场会议,请帮他算出至多能用多少个时间段来做题。
输入格式
第一行,三个整数 $n,k,t$。
第二行,一个长度为 $n$ 的字符串 $s$。$s_i\in \{1,2,3\}$,表示第 $i$ 段时间的类型(1:线下会议;2:线上会议;3:空闲)。
输出格式
如果不可能翘掉 $\le k$ 场会议,输出一行一个 $-1$。
否则输出一行一个非负整数表示答案。
说明/提示
### 样例解释
样例 $1$ 解释:一个最优解如下。
1. 解题(在家)
2. 线上会议(在家)
3. 解题(在家)
4. 通勤(去办公室)
5. 通勤(去办公室)
6. 线下会议(在办公室)
7. 通勤(回家)
8. 通勤(回家,被迫翘掉一场会议)
9. 解题(在家)
10. 线上会议(在家)
- 样例 $2$ 解释:唯一一个解如下。
1. 通勤(去办公室)
2. 通勤(去办公室)
3. 线下会议(在办公室)
4. 空闲(在办公室)
5. 线上会议(在办公室)
6. 通勤(回家)
7. 通勤(回家)
- 样例 $3$ 解释:一整天都待在家里,翘掉所有会议。
- 样例 $4$ 解释:第一场会议和最后一场会议都无法参加。
### 数据范围
- $3\le n\le 8\, 000$;
- $0\le k\le n$;
- $1\le t\lt n/2$。