编号:1995
2030年夏天的一个下午,天气非常炎热,一名伐木工正在喝着3块钱的绿茶,给自己降温。他一边喝,一边回想起了当年。
10年前,他是OICoder的一名集训队员。但是因为上课经常开小差,且经常打断老师讲课,屡教不改,结果被老师劝退了。
这个劝退,导致他当时没学好算法,使他错过了CSPJ一等奖,错过了省集训队,错过了国家集训队,错过了NOI,更错过了北京大学。
由于其他方面也没尽心尽力学好,导致现在当了一个伐木工。
现在回想,可能这就是“皮”的后果吧,不禁流下了懊悔的眼泪~
此时此刻,他面临着一个很现实的问题。他需要你帮他求解一下。(如果10年前,他认真听课,按时完成作业,现在的他肯定是会做的。只是……)
现在一共有n棵树,每棵树有初始重量ai(单位kg),每天可以增长重量bi(单位kg)。现在他要在m天内每天砍一棵树(砍下即得到一棵完整的树)
求,经过m天后得到的最大重量总值。
输入格式
有多个测试用例。
第一行输入测试用例数量T(T <= 200)。
第2行输入第1个测试案例的2个正整数n和m(0 <m <= n <= 250),用空格分隔。
第3行输入 第1个测试案例的n个正整数,表示ai。 (0 <ai <= 100,i = 1,2,3 ... n)
第4行输入 第1个测试案例的n个正整数,表示bi。 (0 <bi <= 100,i = 1,2,3 ...... n)
依次类推。
输出格式
对于每个测试样例,输出经过m天后得到的最大重量总值。
样例输入
2
2 1
10 10
1 1
2 2
8 10
2 3
样例输出
10
21
#include <iostream>
using namespace std;
int main() {
//freopen("1.in", "r", stdin);
//freopen("1.out", "w", stdout);
int T;
int n, m;
int ai[255], bi[255];
cin >> T;
int sum = 0;
for (int i = 1; i <= T; i++) {
cin >> n >> m;
for (int j = 1; j <= n; j++) {
cin >> ai[i];
}
for (int j = 1; j <= n; j++) {
cin >> bi[j];
}
if (m == 1) {
cout << ai[1] << endl;
continue ;
}
int j = 1;
while (n > 0 && m > 0) {
sum += ai[j];
for (int k = j + 1; k <= n; k++) {
ai[k] += bi[k];
}
n--;
m--;
}
cout << sum << endl;
sum = 0;
}
return 0;
}