此题之水,水于上青天
思路:模拟,边输入边判断,如果 $a[i]<=b$ ,可以装的下,s就+=a[i]。接着判断如果 $s>d$ ,已经超过了,就装到一个箱子里, $cnt++$ ,并且把 $s$ 清零,最后输出 $cnt$ 即可
还不懂?看代码注释
AC CODE:
#include<iostream>
using namespace std;
int n,cnt,m,d,a,b,s;
int main(){
cin>>n>>b>>d;
for(int i=1;i<=n;i++){
cin>>a;//输入
if(a<=b){//如果符合条件
s+=a;
if(s>d){//超过这个箱子的最大承受限度
cnt++;//计数器+1
s=0;//清零
}
}
}
cout<<cnt;//输出
return 0;
}