java解题

题目:执行时长 

| 时间限制: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);
 
    }
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值