CF2066E Tropical Season
题目描述
您有 $n$ 个容量无限的桶。第 $i$ 个桶初始装有 $a_i$ 千克水。在此问题中,我们假设所有桶自身重量相同。
已知恰好有一个桶的表面含有少量热带毒药,总重量为 $0.179$ 千克。但您不知道具体是哪个桶含有毒药。您的任务是确定这个有毒的桶。
所有桶都放置在秤上。然而秤不会显示每个桶的确切重量,而是为每对桶显示它们的重量比较结果。因此,对于任意两个桶,您可以判断它们的重量是否相等,若不相等则可知哪个桶更重。毒药和水的重量均计入桶的总重量。
秤始终处于开启状态,其信息可无限次使用。
您还可以进行倒水操作:可以将任意数量的水从任意一个桶倒入另一个桶(两者可为不同桶)。
但倒水时,您必须物理接触被倒出的桶。如果该桶恰好是含毒桶,您将死亡。必须避免这种情况发生。
但您可以将水倒入含毒桶而无需触碰它。
换言之,您可以选择参数 $i, j, x$($i \neq j$,$1 \leq i, j \leq n$,$0 < x \leq a_i$,且编号 $i$ 的桶不含毒)并执行操作 $a_i := a_i - x$,$a_j := a_j + x$。其中 $x$ 不必是整数。
在利用倒水操作和秤的信息时,能否保证确定含毒桶的同时存活?已知毒药必定存在于恰好一个桶中。
此外,您需要处理 $q$ 次查询。每次查询将移除一个现有桶,或添加一个装有指定水量新桶。每次查询后,您需要回答在恰好存在一个含毒桶的条件下,能否保证确定该桶。
输入格式
第一行包含两个整数 $n$ 和 $q$($1 \le n, q \le 2 \cdot 10^5$)。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le 10^6$)——现有桶中的水量。
接下来 $q$ 行每行包含一个查询,格式为 + x 或 - x,分别表示添加和移除一个装有 $x$ 千克水的桶。保证执行 - x 查询时存在水量为 $x$ 的桶,且所有查询后至少保留一个桶。所有查询中 $1 \leq x \leq 10^6$。
输出格式
输出 $q+1$ 行,依次为初始状态及每次查询后的答案。若可确定含毒桶则输出 "Yes",否则输出 "No"。输出不区分大小写(如 "yEs"、"YES" 等均视为肯定回答)。
说明/提示
第一个测试案例中,初始桶的水量为 $[2, 2, 4, 11]$。可先比较第一和第二个桶的重量:若不等则可断定较重桶含毒;若相等则二者均不含毒。接着可将第一桶所有水倒入第二桶,此时第二和第三桶均有 $4$ 千克水。再次比较二者重量:若不等则较重桶含毒;否则二者均不含毒。唯一可能含毒的桶变为第四个。通过此策略可安全确定含毒桶。
翻译由 DeepSeek R1 完成