#P16281. 「MierOI R1」Beyond

    ID: 17692 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>洛谷原创O2优化组合数学洛谷月赛双指针 two-pointer

「MierOI R1」Beyond

题目描述

某一天,小 M 学习了一个叫做「分数规划」的算法,它是用来解决「分数规划问题」的。

:::info[分数规划问题]{open}

nn 个物品,第 ii 个物品的价值为 aia_i,重量为 bib_iai,bia_i,b_i 均为正整数。

nn 个物品中选出 kk 个,记所选物品为 i1,i2,,iki_1,i_2,\dots,i_k,最大化

$$\frac{a_{i_1}+a_{i_2}+\dots+a_{i_k}}{b_{i_1}+b_{i_2}+\dots+b_{i_k}}$$

的值。

:::

恰巧,小 M 还做过一道叫做 sale 的题。他突发奇想,便出了一道题来考考你。

给定 n,kn,k,以及物品的价值序列 aa,求有多少种物品的重量序列 bb满足 1bi2\bm{1 \le b_i \le 2},使以下贪心策略恰好求得「分数规划问题」的最优解:

  • 将物品 按价值 ai\bm{a_i} 降序排序。对于价值相同的物品,按序号 i\bm{i} 升序排序。选取排序后的前 kk 个物品。

答案对 998,244,353998,244,353 取模。

输入格式

本题有多组测试数据。

输入的第一行包含一个正整数 TT,表示测试数据的组数。

接下来依次输入 TT 组测试数据。对于每组测试数据:

  • 第一行,两个正整数 n,kn,k
  • 第二行,nn 个正整数 a1,a2,,ana_1,a_2,\dots,a_n

输出格式

对于每组测试数据,输出一行一个整数,表示满足条件的物品的重量序列 bb 的个数。答案对 998,244,353998,244,353 取模。

2
2 1
10 9
6 3
10 10 8 6 6 5
3
15
5
16 1
256 225 196 169 144 121 100 81 64 49 36 25 16 9 4 1
16 2
256 225 196 169 144 121 100 81 64 49 36 25 16 9 4 1
16 15
256 225 196 169 144 121 100 81 64 49 36 25 16 9 4 1
16 14
256 225 196 169 144 121 100 81 64 49 36 25 16 9 4 1
16 9
256 225 196 169 144 121 100 81 64 49 36 25 16 9 4 1
34816
18176
32996
16887
3171

提示

「样例 #1 解释」

对于第一组测试数据,满足条件的物品的重量序列 bb(1,1),(1,2),(2,2)(1,1),(1,2),(2,2)。当 b=(2,1)b=(2,1) 时,贪心解为 a1b1=102=5\frac{a_1}{b_1}=\frac{10}{2}=5,最优解为 a2b2=91=9\frac{a_2}{b_2}=\frac{9}{1}=9,贪心策略未求得最优解。

「数据范围」

本题采用子任务捆绑测试。

对于所有测试数据,保证 1T51 \le T \le 51kn20001 \le k \le n \le 2\,0001ai1091 \le a_i \le 10^9

::cute-table{tuack}

子任务 nn \le kk 分值
11 55 n\le n 1010
22 1616 ^
33 4040 1515
44 200200
55 20002\,000 =1=1 55
66 ^ =2=2 1010
77 =n1=n-1 55
88 =n2=n-2 1010
99 n\le n 2020