#CF1873F. Money Trees

    ID: 6868 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>二分贪心数学双指针CodeforcesCodeforces Round 898(Div4)Div4FCF1873F1300

Money Trees

题目描述

Luca 站在一排共有 nn 棵树前。第 ii 棵树上有 aia_i 个果实,高度为 hih_i

他想选择一个连续子数组 [hl,hl+1,,hr][h_l, h_{l+1}, \dots, h_r],使得对于每个 iili<rl \leq i < r),hih_i 能被 hi+1h_{i+1} 整除。然后他会收集该子数组中所有树上的果实(即收集 al+al+1++ara_l + a_{l+1} + \dots + a_r 个果实)。但是,如果他收集的果实总数超过 kk,他就会被抓住。

Luca 能选择的最长连续子数组长度是多少,且不会被抓住?

^\daggerxx 能被 yy 整除,则 xy\frac{x}{y} 是整数。

输入格式

第一行包含一个整数 tt1t10001 \leq t \leq 1000),表示测试用例的数量。

每个测试用例的第一行包含两个用空格分隔的整数 nnkk1n21051 \leq n \leq 2 \cdot 10^51k1091 \leq k \leq 10^9),分别表示树的数量和 Luca 能收集而不被抓住的最大果实数。

每个测试用例的第二行包含 nn 个用空格分隔的整数 aia_i1ai1041 \leq a_i \leq 10^4),表示第 ii 棵树上的果实数。

每个测试用例的第三行包含 nn 个用空格分隔的整数 hih_i1hi1091 \leq h_i \leq 10^9),表示第 ii 棵树的高度。

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

输出格式

对于每个测试用例,输出一个整数,表示满足条件的最长连续子数组的长度。如果不存在这样的子数组,输出 00

样例

5
5 12
3 2 4 1 8
4 4 2 4 1
4 8
5 4 1 2
6 2 3 1
3 12
7 9 10
2 2 4
1 10
11
1
7 10
2 6 3 1 5 10 6
72 24 24 12 4 4 2
3
2
1
0
3

样例说明

在第一个测试用例中,Luca 可以选择 l=1l=1r=3r=3 的子数组。

在第二个测试用例中,Luca 可以选择 l=3l=3r=4r=4 的子数组。

在第三个测试用例中,Luca 可以选择 l=2l=2r=2r=2 的子数组。

由 ChatGPT 4.1 翻译

来源

Codeforces 1873F,英文题名 Money Trees。