#C7. 序列

序列

序列

题目描述

给定一个长度为 nn 的序列 a1,a2,,ana_1,a_2,\dots,a_n。每个位置 ii 有一个修改代价 cic_i:对于任意一个位置,你可以花费代价 cic_i,将该位置的 aia_i 修改为任意一个非负整数

你希望花费最小的总代价进行若干次修改,使得修改后的序列满足:每一个前缀和都不是 rr 的倍数

形式化地,令 si=j=1iajs_i=\sum_{j=1}^{i}a_j。你需要保证修改后的序列对所有 1in1\le i\le n 都有 simodr0s_i \bmod r \ne 0

求最小的总代价。

输入格式

第一行一个整数 TT1T1051\le T\le 10^5),表示测试数据组数。

对于每组测试数据:

  • 第一行两个正整数 n,rn,r1n51051\le n\le 5\cdot 10^52r1092\le r\le 10^9)。
  • 第二行 nn 个非负整数 a1,a2,,ana_1,a_2,\dots,a_n0ai<r0\le a_i<r),表示原序列。
  • 第三行 nn 个非负整数 c1,c2,,cnc_1,c_2,\dots,c_n0ci1090\le c_i\le 10^9),表示每个位置的修改代价。

保证所有测试数据的 n\sum n 不超过 51055\cdot 10^5

输出格式

对于每组测试数据,输出一行一个整数,表示最小总代价。

样例 #1

样例输入 #1

3
3 7
1 2 4
1 1 1
4 5
1 1 1 1
1 2 3 4
5 2
0 1 0 1 0
1 1 1 1 1

样例输出 #1

1
0
3

样例 #1 解释

  • 第一组:初始前缀和为 1,3,0(mod7)1,3,0\pmod 7,第三个前缀和是 77 的倍数。将 a3a_3 改为 33(花费 c3=1c_3=1),前缀和变为 1,3,61,3,6,均不为 77 的倍数,代价为 11
  • 第二组:前缀和为 1,2,3,41,2,3,4,均不为 55 的倍数,无需修改,代价为 00
  • 第三组:r=2r=2,需保证每个前缀和都是奇数。可依次将 a1a_1 改为 11a2a_2 改为 00a4a_4 改为 00,代价为 1+1+1=31+1+1=3

数据范围与子任务

子任务 测试点 特殊性质
1 1~4 n10\sum n \le 10
2 5~10 n5000\sum n \le 5000r5000r \le 5000
3 11~15 n5000\sum n \le 5000
4 16 ci1c_i \le 1
5 17~20 无特殊限制

对于所有数据:1n51051\le n\le 5\cdot 10^52r1092\le r\le 10^90ai<r0\le a_i<r0ci1090\le c_i\le 10^9n5105\sum n\le 5\cdot 10^5