1 条题解

  • 0
    @ 2025-8-24 21:41:41

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Blue_wonders
    即使只是片刻的火花,也能在仰望黑夜的人心中留下久久不灭的美丽光芒。

    搬运于2025-08-24 21:41:41,当前版本为作者最后更新于2019-03-15 19:14:43,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    AC,附详细解释

    这个题解也是我RE#19后看了下大佬的代码,然后改进了自己的,也感谢下讨论区的大佬

    这个题#19 特别大,RE了好几遍,TLE了好几遍

    cin>>,cout<<不能用,RE的可以换一换输入输出
    

    思路

    模拟吧,详解在注释,代码不长,就不拿出来单独解思路了
    

    AC代码

    AC详情

    #include<bits/stdc++.h>
    using namespace std;
    int n,m,k,a,o;
    long long s=0;
    int main(){
        scanf("%d%d%d",&n,&m,&k);//输入,要用scanf,不然#19 RE 
        for(int i=1;i<=n;i++){//对于每一个物品都判断一次 
            scanf("%d",&a);//同样 
            if(o+a>m){//如果这个加上上一个剩余的长度最大等待长度 
                s++;//这一秒不能放,所以让机器先处理一次,s++进入下一秒 
                //在处理的这一秒会把之前剩余的处理完(因为后面是%运算,所以剩下一定系<机器处理一秒的) 
                o=a;//剩余的没有了,把新的杆子放到等待处 
            }
            else o+=a;//如果这个杆子加上剩余的不大于等待的,就一块算 
            s+=o/k;//时间加上机器最大处理的时间 
            o%=k;//o记录剩下的有多长(o一定小于机器一秒处理的长度) 
        }
        if(o!=0)s++;//最后如果o还有数,就得画上一秒去处理剩余的 
        printf("%lld\n",s);//输出 
        return 0;
    }
    

    感谢大家能看我的题解!~

    • 1

    信息

    ID
    1833
    时间
    1000ms
    内存
    128MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者