将商品按余数 r=aimodk 分桶。结对规则只取决于余数:
1 件。为使剩余和最大,应撤下该桶中最小的 2⌊∣Vr∣/2⌋ 件。每个桶升序排序并做前缀和后,O(1) 求出应撤下的体积和。没有互补桶的余数则全部保留。
货架上有 n 件商品,第 i 件的体积为 ai,另给定正整数 k。一次操作定义如下:任选一对下标 1≤i<j≤n,若 (ai+aj)modk=0,则同时将这两件商品从货架上撤下。
你必须不断执行上述操作,直到不存在任何一对仍可结对的商品为止。撤下若干商品后,货架上剩余商品的体积之和会减少。请计算:在必须操作到不能再操作为止的前提下,剩余体积之和的最大值。
数据范围:测试组数 t 满足 1≤t≤104;每组 n 满足 1≤n≤2×105,k 满足 1≤k≤109;每个体积满足 1≤ai≤109。单个测试文件中所有 n 之和不超过 2×105。
每个测试文件包含多组测试数据。第一行输入一个整数 t(1≤t≤104),表示数据组数。 每组测试数据格式如下:
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册