单点时限: 2.0 sec
内存限制: 256 MB
Castor 在 ECNU 工厂工作。总厂有一条生产线,现在生产流水线上排队的零件总数为 M。当前 Castor 开始加工第一个零件。
流水线上的零件总是按顺序加工的。例如零件 i 必须是在零件 i+1 之前加工 .
现在 Castor 只需要再加工 K(K⩽M) 个零件就能休息了,Castor 想知道他还要工作多长时间才能休息 .
输入格式
第一行为一个整数 T, 表示测数数据的组数 .
对每组测试数据
第一行有两个整数 M,K(1⩽K⩽M⩽1000)
然后一行有 M 个数字 第 i 个数字表示零件队列的第 i 个零件需要加工的时间为 ti(1⩽ti⩽10000)
输出格式
每组数据输出一行, 每行只有一个整数表示 Castor 还需要工作多长时间
样例
input
2 3 2 5 2 3 3 1 1 2 3
output
7 1
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
int tempK, tempM, temp;
int groups;
vector<int> inputs[100];
// 一组数据占据一个vector,其中每个vector分别放 [M][K][零件队列]
cin >> groups;
for (int g = 0; g < groups; g++) {
scanf("%d%d", &tempM, &tempK);
inputs[g].insert(inputs[g].end(), tempM);
inputs[g].insert(inputs[g].end(), tempK);
for (int i = 0; i < tempM; i++) {
scanf("%d", &temp);
inputs[g].insert(inputs[g].end(), temp);
}
}
// 依次计算加和,然后输出并将sum置0
int sum = 0;
for (int g = 0; g < groups; g++) {
for (int j = 0; j < inputs[g][1]; j++) { //循环加tempK个
sum += inputs[g][j + 2];
}
cout << sum << endl;
sum = 0;
}
}
ps:似乎是可以更简洁一些。笔者比较菜,只提供了比较直线条的解决办法,如果有更好的方法欢迎宝子们分享哈