CF2064D.Eating

普及+/提高

通过率:0%

AC君温馨提醒

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

题目描述

有 nn 个史莱姆排成一行,第 ii 个史莱姆的体重为 wiw_i。当史莱姆 ii 满足 wi≥wjw_i \geq w_j 时,它可以吃掉史莱姆 jj;之后,史莱姆 jj 会消失,史莱姆 ii 的体重将变为 wi⊕wjw_i \oplus w_j ∗^{\text{∗}}。

史莱姆国王希望进行一个参数为 xx 的实验,步骤如下:

  • 在行的最右端(第 nn 个史莱姆之后)新增一个体重为 xx 的史莱姆。
  • 这个新史莱姆会不断尝试吃掉左侧相邻的史莱姆(如果可能的话),并移动到被吃掉的史莱姆的位置。当左侧没有史莱姆或其左侧史莱姆的体重大于自身时,该过程停止。(此过程中不会有其他史莱姆被吃掉)
  • 该实验的得分为被吃掉的史莱姆总数。

史莱姆国王将向你提出 qq 次询问。每次询问给定一个整数 xx,你需要计算以该参数进行实验的得分。

注意这些询问是假设性的,并不会实际改变史莱姆的初始状态(即查询是非持久化的)。

∗^{\text{∗}} 此处 ⊕\oplus 表示按位异或运算。

输入格式

第一行包含一个整数 tt(1≤t≤1041 \le t \le 10^4)——测试用例数量。

每个测试用例的第一行包含两个整数 nn 和 qq(1≤n,q≤2⋅1051 \le n, q \le 2 \cdot 10^5)——分别表示初始史莱姆数量和询问次数。

接下来一行包含 nn 个整数 w1,w2,…,wnw_1,w_2,\ldots,w_n(1≤wi<2301 \le w_i < 2^{30})——初始史莱姆的体重。

接下来 qq 行每行包含一个整数 xx(1≤x<2301 \le x < 2^{30})——实验参数。

所有测试用例的 nn 之和不超过 2⋅1052 \cdot 10^5,qq 之和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每个询问,输出一个整数表示实验得分。

输入输出样例

  • 输入#1

    3
    1 1
    5
    6
    4 4
    1 5 4 11
    8
    13
    16
    15
    10 9
    10 4 3 9 7 4 6 1 9 4
    2
    6
    5
    6
    9
    8
    6
    2
    7

    输出#1

    1
    0 2 4 2
    0 1 1 1 3 3 1 0 1

说明/提示

第二个测试用例的第一个查询:

  • 新增体重为 88 的史莱姆后,数组变为 [1,5,4,11,8][1, 5, 4, 11, \color{red}8]。
  • 新增史莱姆体重小于左侧史莱姆,无法吃掉,最终得分为 00。

第二个测试用例的第二个查询:

  • 新增体重为 1313 的史莱姆后,数组变为 [1,5,4,11,13][1, 5, 4, 11, \color{red}{13}]。
  • 新增史莱姆吃掉左侧史莱姆,体重变为 13⊕11=613 \oplus 11 = 6,数组变为 [1,5,4,6][1, 5, 4, \color{red}{6}]。
  • 新增史莱姆继续吃掉左侧史莱姆,体重变为 6⊕4=26 \oplus 4 = 2,数组变为 [1,5,2][1, 5, \color{red}{2}]。
  • 此时无法继续吃掉左侧史莱姆,最终得分为 22。

翻译由 DeepSeek R1 完成

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

首页