题解 P2793 【Facer的工厂】
Blue_wonders · · 题解
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;
}
感谢大家能看我的题解!~