AT_scpc2026_div3_i CUBRID HA Load Balance
题目描述
/ / CUBRID HA 集群是由 $N$ 台服务器组成的系统,服务器编号从 $1$ 到 $N$。
Jank 成为 SCSC 的服务器管理员,他希望选取部分服务器用于 CUBRID HA 集群。Jank 会将他选中的服务器开机,未选中的服务器则保持关闭状态。
Jank 统治的 SCSC 允许他在开机时为每一台被选中的服务器指定是以 Master 还是 Slave 的方式运行。Master 服务器可以处理 RW 请求和 RO 请求,Slave 服务器可以处理 RO 请求和 SO 请求。每台服务器同一时刻最多只能处理一个请求。
若当前所有已开机的服务器中没有 Master,且至少有一台 Slave 正在运行,则编号最小的已开机 Slave 服务器会立即自动升级为 Master 服务器。
Jank 需要按照顺序处理 $Q$ 个如下两种类型的操作:
- `1 i`:关闭第 $i$ 台服务器。如果该服务器已关闭,则忽略本条操作。
- `2 a b c`:同时有 $a$ 个 RW 请求、$b$ 个 RO 请求和 $c$ 个 SO 请求到来。
每当出现类型 $2$ 的操作时,所有请求必须全部利用当前已开机的服务器进行处理。每个请求必须分配给能处理该请求的服务器,并且每台服务器最多只能被分配一个请求。如果请求没有在发起时得到处理,则无法再被处理。
请求分配后,每台服务器各自处理并完成被分配的请求。未被指派请求的服务器,可以随时接受新的请求。
请你求出 Jank 最初需要选择的最少服务器数量,才能完成全部请求的处理。如果无论如何都无法满足所有请求,输出 $-1$。
输入格式
输入由标准输入给出,格式如下:
> $N$ $Q$
> $\mathrm{query}_1$
> $\mathrm{query}_2$
> $\vdots$
> $\mathrm{query}_Q$
每条操作是以下两种格式之一:
> 1 $i$
> 2 $a$ $b$ $c$
输出格式
输出 Jank 需要最初选择的最少服务器数量,才能满足所有请求。如果无法做到,输出 $-1$。
说明/提示
### 数据范围
- $1 \leq N,Q \leq 2000$
- $1 \leq i \leq N$
- $0 \leq a,b,c \leq N$
- 操作中至少有一个为第2类请求
- 所有输入均为整数
由 ChatGPT 5 翻译