CF1998E1.Eliminating Balls With Merging (Easy Version)

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

喝水

—— 孙武,程序员健康指南

这是问题的简单版本。本题中 x=nx=n 。你必须同时解决这两个版本的问题,才能 hack。

给你两个整数 nn 和 xx ( x=nx=n )。有 nn 个球排成一排,从左到右编号为 11 到 nn 。最初,在第 ii 个球上写着一个值 aia_i。

对于从 11 到 nn 的每个整数 ii ,我们定义一个函数 f(i)f(i) 如下:

  • 假设有一个集合 S={1,2,…,i}S = \{1, 2, \ldots, i\} 。

  • 在每次运算中,必须从 SS 中选择一个整数 ll ( 1≤l<i1 \leq l < i ),使得 ll 不是 SS 的最大元素。假设 rr 是 SS 中大于 ll 的最小元素。

    • 如果是 al>ara_l > a_r ,则令 al=al+ara_l = a_l + a_r 并从 SS 中删除 rr 。
    • 如果是 al<ara_l < a_r ,则令 ar=al+ara_r = a_l + a_r ,并从 SS 删除 ll 。
    • 如果是 al=ara_l = a_r ,则从 SS 中选择删除整数 ll 或 rr :
      • 如果选择从 SS 中删除 ll ,则设置 ar=al+ara_r = a_l + a_r 并从 SS 中删除 ll 。
      • 如果您选择从 SS 中删除 rr ,则需要设置 al=al+ara_l = a_l + a_r ,并从 SS 中删除 rr 。
  • f(i)f(i) 表示这样的整数 jj ( 1≤j≤i1 \le j \le i )的个数,即执行上述操作恰好 i−1i - 1 次后可以得到 S={j}S = \{j\} 。

对 xx 到 nn 的每个整数 ii 都需要求出 f(i)f(i) 。

输入格式

第一行包含 tt ( 1≤t≤1041 \leq t \leq 10^4 ) ,表示测试用例数。

每个测试用例的第一行包含两个整数 nn 和 xx ( 1≤n≤2⋅105;x=n1 \leq n \leq 2 \cdot 10^5; x = n )--球的个数和最小索引 ii ,您需要找到该索引的 f(i)f(i) 。

每个测试用例的第二行包含 a1,a2,…,ana_1, a_2, \ldots, a_n ( 1≤ai≤1091 \leq a_i \leq 10^9 ) - 写在每个球上的初始数字。

保证所有测试用例中 nn 的总和不超过 2⋅1052 \cdot 10^5 。

输出格式

对于每个测试用例,在一行中输出 n−x+1n-x+1 个空格分隔的整数,其中第 jj 个整数表示 f(x+j−1)f(x+j-1) 。

样例解释

在第一个测试用例中,要计算 f(5)f(5) 。可以看出,经过 44 次运算后, SS 可以包含 22 、 33 或 44 。下面是生成 S={4}S = \{4\} 所需的运算。

  • 最初是 S={1,2,3,4,5}S = \{1, 2, 3, 4, 5\} 和 a=[1,2,3,2,1]a = [1, 2, 3, 2, 1] 。
  • 选择 l=1l = 1 。自然是 r=2r = 2 。由于 a1<a2a_1< a_2 ,我们设置 a2=1+2a_2 = 1 + 2 ,并从 SS 中删除 11 。现在, S={2,3,4,5}S = \{2, 3, 4, 5\} 和 a=[1,3,3,2,1]a = [1, 3, 3, 2, 1] 。
  • 选择 l=4l = 4 。自然是 r=5r = 5 。由于 a4>a5a_4> a_5 ,我们设置 a4=2+1a_4 = 2 + 1 ,并从 SS 中删除 55 。现在, S={2,3,4}S = \{2, 3, 4\} 和 a=[1,3,3,3,1]a = [1, 3, 3, 3, 1] 。
  • 选择 l=3l = 3 。自然是 r=4r = 4 。由于 a3=a4a_3 = a_4 ,我们可以选择删除 33 或 44 。既然要保留 44 ,那么就删除 33 。因此,设置 a4=3+3a_4 = 3 + 3 并从 SS 中删除 33 。现在, S={2,4}S = \{2, 4\} 和 a=[1,3,3,6,1]a = [1, 3, 3, 6, 1] 。
  • 选择 l=2l = 2 。自然是 r=4r = 4 。由于 a2<a4a_2< a_4 ,我们设置 a4=3+6a_4 = 3 + 6 ,并从 SS 中删除 22 。最后是 S={4}S = \{4\} 和 a=[1,3,3,9,1]a = [1, 3, 3, 9, 1] 。

在第二个测试案例中,要求计算 f(7)f(7) 。可以证明,经过 66 次运算后, SS 可以包含 22 、 44 、 66 或 77 。

输入输出样例

  • 输入#1

    3
    5 5
    1 2 3 2 1
    7 7
    4 5 1 2 1 4 5
    11 11
    1 2 3 1 1 9 3 2 4 1 3

    输出#1

    3
    4
    4

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

首页