题目:执行时长
| 时间限制:1秒 | 内存限制:262144K | 语言限制:不限
为了充分发挥GPU算力,需要尽可能多的将任务交给GPU执行,现在有一个任务数组,数组元素表示在这1秒内新增的任务个数且每秒都有新增任务,假设GPU最多一次执行n个任务,一次执行耗时1秒,在保证GPU不空闲情况下,最少需要多长时间执行完成
输入描述:
第一个参数为GPU一次最多执行的任务个数,取值范围[1, 10000]
第二个参数为任务数组长度,取值范围[1, 10000]
第三个参数为任务数组,数字范围[1, 10000]输出描述:
执行完所有任务最少需要多少秒
示例1
输入
3
5
1 2 3 4 5
输出
6
说明
一次最多执行3个任务,最少耗时6s
示例2
输入
4
5
5 4 1 1 1
输出
5
说明
一次最多执行4个任务,最少耗时5s
解题思路:
如果此刻新增的任务个数小于等于GPU一次执行任务个数,则表示此刻任务全部执行完成;
如果此刻新增任务个数大于GPU一次执行任务个数,则表示任务有余留,剩余任务需要下一秒进行执行。
最后剩余的任务数如果能整除GPU的一次执行任务个数,则直接取其商;
如果不能整除,则商取整并+1。
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); //一秒钟内能执行的任务个数
int len = sc.nextInt();
int[] ints = new int[len];
for(int i=0;i<len;i++){
ints[i] = sc.nextInt();
}
int second = 0; //计时
int more = 0; //剩余未完成的任务个数
for(int i=0;i<len;i++){
if(ints[i]+more<=n){
more = 0;
}else {
more = ints[i] + more -n; //此刻任务数与上秒剩余的任务数减去n
}
second++;
}
if(more%n==0){
second += more/n; //任务正好完成
}else {
second += more/n + 1;
}
System.out.println(second);
}
}