CF1998E1.Eliminating Balls With Merging (Easy Version)
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
喝水
—— 孙武,程序员健康指南
这是问题的简单版本。本题中 x=n 。你必须同时解决这两个版本的问题,才能 hack。
给你两个整数 n 和 x ( x=n )。有 n 个球排成一排,从左到右编号为 1 到 n 。最初,在第 i 个球上写着一个值 ai。
对于从 1 到 n 的每个整数 i ,我们定义一个函数 f(i) 如下:
-
假设有一个集合 S={1,2,…,i} 。
-
在每次运算中,必须从 S 中选择一个整数 l ( 1≤l<i ),使得 l 不是 S 的最大元素。假设 r 是 S 中大于 l 的最小元素。
- 如果是 al>ar ,则令 al=al+ar 并从 S 中删除 r 。
- 如果是 al<ar ,则令 ar=al+ar ,并从 S 删除 l 。
- 如果是 al=ar ,则从 S 中选择删除整数 l 或 r :
- 如果选择从 S 中删除 l ,则设置 ar=al+ar 并从 S 中删除 l 。
- 如果您选择从 S 中删除 r ,则需要设置 al=al+ar ,并从 S 中删除 r 。
-
f(i) 表示这样的整数 j ( 1≤j≤i )的个数,即执行上述操作恰好 i−1 次后可以得到 S={j} 。
对 x 到 n 的每个整数 i 都需要求出 f(i) 。
输入格式
第一行包含 t ( 1≤t≤104 ) ,表示测试用例数。
每个测试用例的第一行包含两个整数 n 和 x ( 1≤n≤2⋅105;x=n )--球的个数和最小索引 i ,您需要找到该索引的 f(i) 。
每个测试用例的第二行包含 a1,a2,…,an ( 1≤ai≤109 ) - 写在每个球上的初始数字。
保证所有测试用例中 n 的总和不超过 2⋅105 。
输出格式
对于每个测试用例,在一行中输出 n−x+1 个空格分隔的整数,其中第 j 个整数表示 f(x+j−1) 。
样例解释
在第一个测试用例中,要计算 f(5) 。可以看出,经过 4 次运算后, S 可以包含 2 、 3 或 4 。下面是生成 S={4} 所需的运算。
- 最初是 S={1,2,3,4,5} 和 a=[1,2,3,2,1] 。
- 选择 l=1 。自然是 r=2 。由于 a1<a2 ,我们设置 a2=1+2 ,并从 S 中删除 1 。现在, S={2,3,4,5} 和 a=[1,3,3,2,1] 。
- 选择 l=4 。自然是 r=5 。由于 a4>a5 ,我们设置 a4=2+1 ,并从 S 中删除 5 。现在, S={2,3,4} 和 a=[1,3,3,3,1] 。
- 选择 l=3 。自然是 r=4 。由于 a3=a4 ,我们可以选择删除 3 或 4 。既然要保留 4 ,那么就删除 3 。因此,设置 a4=3+3 并从 S 中删除 3 。现在, S={2,4} 和 a=[1,3,3,6,1] 。
- 选择 l=2 。自然是 r=4 。由于 a2<a4 ,我们设置 a4=3+6 ,并从 S 中删除 2 。最后是 S={4} 和 a=[1,3,3,9,1] 。
在第二个测试案例中,要求计算 f(7) 。可以证明,经过 6 次运算后, S 可以包含 2 、 4 、 6 或 7 。
输入输出样例
输入#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测评打分。不知道怎么写?