AT_scpc2026_div1_a CUBRID HA Load Balance

题目描述

#### 表示语言 CUBRID HA 集群是一个由 $N$ 台服务器组成的系统,服务器编号从 $1$ 到 $N$。 Jank 成为了 SCSC 的服务器管理员,他需要从这个 CUBRID HA 集群中选择一些服务器来使用。Jank 会将他选择的服务器开启,没有选择的服务器则保持关闭状态。 在开启服务器时,Jank 会为每台被选中的服务器指定角色:可以设置为 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 翻译