T20430.盒子装箱 题解
2024-08-13 10:06:43
发布于:广东
#include<bits/stdc++.h>
using namespace std;
int n,m,k,a[200005];
int main(){
freopen("box.in","r",stdin);
freopen("box.out","w",stdout);
scanf("%d%d%d",&n,&m,&k);
for(int i=0;i<n;i++)scanf("%d",&a[i]);
int ans=0,b=k,i=n-1;
for(;i>=0&&m>=1;){
if(b>=a[i])b-=a[i],ans++,i--;
else m--,b=k;
}cout<<ans;
fclose(stdin);
fclose(stdout);
return 0;
}
全部评论 1
或者:
#include<bits/stdc++.h> using namespace std; int n,m,k; int a[200005]; int main(){ freopen("box.in","r",stdin); freopen("box.out","w",stdout); cin>>n>>m>>k; for(int i = 1;i <= n;i++){ cin>>a[i]; } int num = m; int sum = 0; int x = 0; for(int i = n;i >= 1;i--){ if(x + a[i] <= k){ x += a[i]; sum++; }else{ if(num == 1){ cout<<sum; break; }else{ num--; sum++; x = a[i]; } } } fclose(stdin); fclose(stdout); return 0; }
2024-08-13 来自 浙江
1好长
2024-08-13 来自 广东
0老师给我们写的。
2024-08-13 来自 浙江
0#include<bits/stdc++.h> using namespace std; int n,m,k,a[200005],ans=0,b=k; int main(){ freopen("box.in","r",stdin); freopen("box.out","w",stdout); scanf("%d%d%d",&n,&m,&k); for(int i=0;i<n;i++)scanf("%d",&a[i]); for(int i=n-1;i>=0&&m>=1;b>=a[i]?b-=a[i],ans++,i--:m--,b=k); cout<<ans; fclose(stdin); fclose(stdout); }
极限13行
2024-08-13 来自 广东
0
有帮助,赞一个