此问题在原题上进行了加强修改(不可改变Capoo顺序)
Problem Statement
有 $n$ 只可爱的 Capoo 想玩叠叠乐,每只 Capoo 都有一个体力值 $a_i$ 。 为了防止在叠叠乐的过程中 Capoo 受到伤害,Capoo 们相互约定,除了在最上面的 Capoo ,每只 Capoo 的体力值要大于等于它上面的所有 Capoo 的体力值之和。 Capoo 们自然希望参与叠叠乐的 Capoo 数量最多,所以它们向你提出了一个问题,在不可以改变原有 Capoo 顺序的情况下,参与叠叠乐的 Capoo 数量最多为多少?
Input
本题包含多组测试数据。 输入第一行一个整数 $T$ ,表示测试数据组数。($1 \leq T \leq 2 \times 10^5$) 对于每组数据,第一行一个整数 $n$ ,表示 Capoo 数量。($1 \leq n \leq 2 \times 10^5$) 第二行 $n$ 个整数 $a_i$ ,第 $i$ 个整数表示第 $i$ 只 Capoo 的体力值。($1 \leq a_i \leq 10^9$) 数据保证 $\sum n$ 之和不大于 $2 \times 10^5$ 。
Output
对于每组测试数据,输出一行一个整数表示答案,每两组数据之间的答案需换行。
Solving
使用单调栈配合进行反悔贪心即可,始终用序列中体力值最小且能兜住上层所有Capoo的Capoo作为底盘
|
|