QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 256 MB Total points: 100

#5703. 混合物

Statistics

著名餐厅“盐、胡椒与大蒜”的主厨塞尔日(Serge)正努力争取他的第一颗米其林星。他获悉,一位神秘的专家计划今晚光顾他的餐厅。

尽管专家的身份尚未公开,但塞尔日确信他知道专家会点菜单上的哪道菜,也知道专家的口味偏好。具体来说,专家要求菜肴中盐、胡椒和大蒜粉的比例极其精确。

塞尔日厨房的架子上放着一套装有盐、胡椒和大蒜粉混合物的瓶子。对于每一瓶,他都知道其中每种成分的精确重量(以千克为单位)。塞尔日可以组合任意数量的瓶装混合物(或者直接使用其中一瓶)来获得特定菜肴所需的特定比例的混合物。

幸运的是,菜肴中需要添加的混合物总量非常小,因此你可以假设瓶中的量总是充足的。然而,描述比例的数值可能非常大。

塞尔日想知道是否可以利用现有的瓶子获得专家喜爱的混合物,如果可以,实现这一目标所需的最少瓶数是多少。

此外,架子上的瓶子集合会随时间变化,因为塞尔日会收到新的瓶子或将自己的瓶子借给其他厨师。因此,他希望在每次变动后都能回答这个问题。

例如,假设专家喜爱的混合物比例为 $1 : 1 : 1$,架子上有三瓶混合物(表 1):

混合物 盐的含量 (kg) 胡椒的含量 (kg) 大蒜粉的含量 (kg)
1 10 20 30
2 300 200 100
3 12 15 27

表 1:架子上的瓶子

要获得所需的混合物,只需使用来自瓶子 1 和瓶子 2 的等量混合物即可。如果移除了瓶子 2,则无法再获得该混合物。

请编写一个程序来帮助塞尔日解决这个问题!

输入格式

第一行包含三个非负整数 $S_f, P_f$ 和 $G_f$ ($0 \le S_f, P_f, G_f$;$0 < S_f + P_f + G_f \le 10^6$),描述专家喜爱的混合物中盐、胡椒和大蒜粉的含量。对于任何实数 $\alpha > 0$,$(\alpha S_f, \alpha P_f, \alpha G_f)$ 也是专家喜爱的混合物。

第二行包含一个正整数 $N$(架子上的变动次数,$N \le 100\,000$)。你应该假设架子最初是空的。

接下来的 $N$ 行,每行描述架子上的一次变动:

  • 如果添加了一个新瓶子,该行包含大写字母 $A$,后跟三个非负整数 $S_i, P_i$ 和 $G_i$ ($0 \le S_i, P_i, G_i$;$0 < S_i + P_i + G_i \le 10^6$),描述添加的瓶子中盐、胡椒和大蒜粉的含量。添加的瓶子按从 1 开始的唯一整数依次编号,即第 $i$ 个瓶子对应输入数据中第 $i$ 个添加的瓶子。
  • 如果从架子上移除了某个特定的瓶子,该行包含大写字母 $R$,后跟整数 $r_i$(瓶子编号)。所有移除操作中的 $r_i$ 值都是唯一的,$r_i$ 永远不会超过目前为止添加的瓶子总数。

输出格式

输出 $N$ 行。第 $j$ 行 ($1 \le j \le N$) 应包含数字 $x_j$,表示在架子上发生前 $j$ 次变动后,使用现有瓶子配制出符合专家喜爱比例的混合物所需的最少瓶数,如果无法配制,则输出 0。

样例

输入格式 1

1 2 3
6
A 5 6 7
A 3 10 17
R 1
A 15 18 21
A 5 10 15
R 3

输出格式 1

0
2
0
2
1
1

说明

请注意,瓶子 1 和瓶子 3 含有相同比例的盐、胡椒和大蒜粉。

子任务

  1. (13 分) $N \le 50, 0 < S_i + P_i + G_i \le 10^2$
  2. (17 分) $N \le 500, 0 < S_i + P_i + G_i \le 10^3$
  3. (30 分) $N \le 5000, 0 < S_i + P_i + G_i \le 10^4$
  4. (40 分) 无其他限制

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.