CF2066E.Tropical Season

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

您有 nn 个容量无限的桶。第 ii 个桶初始装有 aia_i 千克水。在此问题中,我们假设所有桶自身重量相同。

已知恰好有一个桶的表面含有少量热带毒药,总重量为 0.1790.179 千克。但您不知道具体是哪个桶含有毒药。您的任务是确定这个有毒的桶。

所有桶都放置在秤上。然而秤不会显示每个桶的确切重量,而是为每对桶显示它们的重量比较结果。因此,对于任意两个桶,您可以判断它们的重量是否相等,若不相等则可知哪个桶更重。毒药和水的重量均计入桶的总重量。

秤始终处于开启状态,其信息可无限次使用。

您还可以进行倒水操作:可以将任意数量的水从任意一个桶倒入另一个桶(两者可为不同桶)。

但倒水时,您必须物理接触被倒出的桶。如果该桶恰好是含毒桶,您将死亡。必须避免这种情况发生。

但您可以将水倒入含毒桶而无需触碰它。

换言之,您可以选择参数 i,j,xi, j, x(i≠ji \neq j,1≤i,j≤n1 \leq i, j \leq n,0<x≤ai0 < x \leq a_i,且编号 ii 的桶不含毒)并执行操作 ai:=ai−xa_i := a_i - x,aj:=aj+xa_j := a_j + x。其中 xx 不必是整数。

在利用倒水操作和秤的信息时,能否保证确定含毒桶的同时存活?已知毒药必定存在于恰好一个桶中。

此外,您需要处理 qq 次查询。每次查询将移除一个现有桶,或添加一个装有指定水量新桶。每次查询后,您需要回答在恰好存在一个含毒桶的条件下,能否保证确定该桶。

输入格式

第一行包含两个整数 nn 和 qq(1≤n,q≤2⋅1051 \le n, q \le 2 \cdot 10^5)。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤1061 \le a_i \le 10^6)——现有桶中的水量。

接下来 qq 行每行包含一个查询,格式为 + x 或 - x,分别表示添加和移除一个装有 xx 千克水的桶。保证执行 - x 查询时存在水量为 xx 的桶,且所有查询后至少保留一个桶。所有查询中 1≤x≤1061 \leq x \leq 10^6。

输出格式

输出 q+1q+1 行,依次为初始状态及每次查询后的答案。若可确定含毒桶则输出 "Yes",否则输出 "No"。输出不区分大小写(如 "yEs"、"YES" 等均视为肯定回答)。

输入输出样例

  • 输入#1

    4 7
    2 2 4 11
    - 2
    + 4
    + 30
    + 40
    - 4
    + 2
    + 2

    输出#1

    Yes
    No
    Yes
    No
    Yes
    No
    No
    Yes
  • 输入#2

    6 7
    5000 1000 400 400 100 99
    + 1
    - 5000
    - 1
    - 400
    - 400
    - 100
    - 99

    输出#2

    No
    Yes
    Yes
    Yes
    No
    No
    No
    Yes

说明/提示

第一个测试案例中,初始桶的水量为 [2,2,4,11][2, 2, 4, 11]。可先比较第一和第二个桶的重量:若不等则可断定较重桶含毒;若相等则二者均不含毒。接着可将第一桶所有水倒入第二桶,此时第二和第三桶均有 44 千克水。再次比较二者重量:若不等则较重桶含毒;否则二者均不含毒。唯一可能含毒的桶变为第四个。通过此策略可安全确定含毒桶。

翻译由 DeepSeek R1 完成

输入解题思路,AI测评打分。不知道怎么写?

首页