#include<iostream> #include<cstdio> #include<cstring> using namespace std; #define N 109 int song[N],cd[N]; int n,m,t,cnt=1,ans=-1; void dfs(int now,int x) { if (now==n+1) {ans=max(ans,x);return;} if (x+n+1-now<ans) return; if (cd[cnt]>=song[now]) {cd[cnt]-=song[now];dfs(now+1,x+1);cd[cnt]+=song[now];} else if (cnt<m&&cd[cnt+1]>=song[now]) {cnt++;cd[cnt]-=song[now];dfs(now+1,x+1);cd[cnt]=t;cnt--;} dfs(now+1,x); } int main() { scanf("%d%d%d",&n,&t,&m); for (int i=1;i<=n;i++) scanf("%d",&song[i]); for (int i=1;i<=m;i++) cd[i]=t; dfs(1,0); printf("%d\n",ans); return 0; }
【USACO3-4-3】“破锣摇滚”乐队 dfs
猜你喜欢
转载自blog.csdn.net/dadatu_zhao/article/details/80443300
今日推荐
周排行