题目背景:
ST正在打SL。SL血量为 h。ST有n个技能。第i个技能伤害为 a[i],冷却时为c[i], 在第x轮使用过某个技能后,在第 x + c[i] 轮才可以再次使用。每一轮,可以用掉所有没在冷却时间技能。 最开始,所有技能都不在冷却状态。需要多少轮才能把SL击败(即血量不为正数)?
input:
第一行包含一个正整数t(1≤t≤10^4)——测试用例的个数;
每个测试数据的第一行包含两个正整数 h和n(1≤h,n≤2*10^5)——SL的血量和ST的技能数量;
接下来一行 a[1],a[2]...an——每个技能的伤害;
接下来一行c[1], c[2]...cn——冷却时间;
保证:h和n的和都不超过2*10^5
output:
对每个测试用例,输出打败SL的最少轮数
样例输入1:
8
3 2
2 1
2 1
5 2
2 1
2 1
50 3
5 6 7
5 6 7
50 3
2 2 2
3 3 3
90000 2
200000 200000
1 1
100000 1
1
200000
6 7
3 2 3 2 3 1 2
6 5 9 5 10 7 7
21 6
1 1 1 1 1 1
5 5 8 10 7 6
样例输出1:
1
3
15
25
1
19999800001
1
21
输入模板(可参考):
#include <bits/stdc++.h>
using namespace std;
const int N = 2 * 1e5 + 10;
int a[N];
int c[N];
int main() {
int t;
scanf("%d", &t);
while (t--) {
int h, n;
scanf("%d%d", &h, &n);
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
}
for (int i = 1; i <= n; i++) {
scanf("%d", &c[i]);
}
}
return 0;
}
思索了很久,求代码!