4 条题解
- 
  1
#include<algorithm> #include<iostream> using namespace std; const int MAXN = 114514; int n,w,ans,c[MAXN],cab[MAXN]; void dfs(int now,int cnt) { if (cnt >= ans) { return ; } if (now == n + 1) { ans = min(ans,cnt); return ; } for (int i = 1;i <= cnt;i++) { if (cab[i] + c[now] <= w) { cab[i] += c[now]; dfs(now + 1,cnt); cab[i] -= c[now]; } } cab[cnt + 1] = c[now]; dfs(now + 1,cnt + 1); cab[cnt + 1] = 0; } int main() { cin >> n >> w; for (int i = 1;i <= n;i++) { cin >> c[i]; } sort(c + 1,c + n + 1); reverse(c + 1,c + n + 1); ans = n; dfs(1,0); cout << ans << endl; return 0; } 
信息
- ID
 - 76
 - 时间
 - 1000ms
 - 内存
 - 128MiB
 - 难度
 - 7
 - 标签
 - 递交数
 - 411
 - 已通过
 - 101
 - 上传者