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
- 标签
- 递交数
- 410
- 已通过
- 100
- 上传者