#596. Perform Operations to Maximize Score Plus

Perform Operations to Maximize Score Plus

题目背景

我看到 satyam343 了。我浑身发抖。这次请多出一些中位数问题。我喜欢这些。satyam343,我们相信你。

— satyam343 的头号粉丝

题目描述

你将获得一个长度为 nn 的数组 aa 和一个整数 kk 。您还将获得一个长度为 nn 的二进制数组 bb

你先选出一个索引 ii',删除 aia_{i'},然后最多可​​以执行以下操作之一 kk 次:

  • 选择一个索引 i(1in,ii)i(1\le i\le n,i\ne i'),满足 bi=1b_i=1。设置 ai=ai+1a_i=a_i+1 (即,将 aia_i 增加 11)。
  • 选择一个索引 i(1in,ii)i(1\le i\le n,i\ne i'),满足 bi=0b_i=0 。设置 ai=ai+1a_i=a_i+1 (即,将 aia_i 增加 11)。

你的得分定义为 i=1n(ai+max{median(ci)})\oplus_{i=1}^n(a_i+\max\{\text{median}(c_i)\}) ,其中 cic_i 表示从 aa 中删除 aia_i 后得到的长度为 n1n−1 的数组。

对于任意数组 ppmedian(p)\text{median}(p) 定义为 pp 中第 p+12⌊\frac{|p|+1}{2}⌋ 个最小元素。例如, median([3,2,1,3])=2\text{median}([3,2,1,3])=2median([6,2,4,5,1])=4\text{median}([6,2,4,5,1])=4

输入格式

第一行包含一个整数 t(1t104)t(1\le t\le 10^4) — 测试用例的数量。

每个测试用例以两个整数 nnk(2n2105,0k109)k(2\le n\le 2\cdot 10^5,0\le k\le 10^9) — 表示 aa 的长度和可以执行的操作数。

下一行包含 nn 个空格分隔的整数 a1,a2,,an(1ai109)a_1,a_2,…,a_n(1\le a_i\le 10^9) — 表示数组 aa

以下行包含 nn 个空格分隔的整数 b1,b2,,bn(bib_1,b_2,…,b_n(b_i0011 )) —— 表示数组 bb

保证所有测试用例的 nn 的总和不超过 21052\cdot 10^5

输出格式

对于每个测试用例,在新行上输出n可以获得的分数值。

8
2 10
3 3
1 1
3 10
3 3 3
0 0 0
4 4
2 1 5 1
0 1 0 1
5 4
7 5 2 5 4
0 0 1 0 1
5 1
5 15 15 2 11
1 0 0 1 1
5 2
10 11 4 10 15
1 1 0 1 0
4 4
1 1 2 5
1 1 0 0
2 1000000000
1000000000 1000000000
1 1
16
6
8
12
21
26
8
3000000000