将数组按余数分组:对每个数计算 r=aimodk,分类到 Vr。
对于 r=0 以及(若 k 为偶数)r=2k:同类元素可以两两配对移除,最多只能留下 1 个。要最大化剩余和,应移除该类中最小的 2⌊2∣Vr∣⌋ 个元素。
对于互补余数对 r 与 s=(k−r)modk(取 1≤r<s≤k−1):
将每个 Vr 升序排序并做前缀和 Pr。记 sum(Vr)=Pr[∣Vr∣]。
给定一个长度为n的正整数数组{a1,a2,...,an},以及一个正整数k。 定义一次操作如下:
你必须重复执行操作,直到数组中不存在这样的两个元素au和av,使得它们的和能被整除为止。
此时数组长度减少若干,你需要最大化剩余元素之和。请计算并输出该最大和。
每个测试文件均包含多组测试数据。第一行输入一个整数t(1≦t≦104)表示数据组数,每组测试数
据描述如下: 第一行输入两个整数n和k(1≦n≦2×105,1≦k≦109)
第二行输入n个整数a1,a2,,..,an(1≦ai≦109)
除此之外,保证单个测试文件的n之和不超过2×105
对于每一组测试数据,新起一-行,输出一个整数,表示满足条件的最大数组元素之和。
输入
2
3 4
1 7 4
5 3
1 2 3 4 5
输出
4
3