5 条题解

  • 0
    @ 2026-3-27 15:17:29
    #include <bits/stdc++.h>
    using namespace std;
    const int N = 1e2 + 10;
    const int mod = 1e9 + 7;
    const int INF = 0x3f3f3f3f;
    const long long LLINF = 0x3f3f3f3f3f3f3f3fLL;
    int n, m, a[N], ans, sum[N];
    void dfs(int u, int v){
    	if(v >= ans) return;
    	if(u == n){
    		ans = v;
    		return;
    	}
    	for(int i = 0 ; i < v ; i++){
    		if(sum[i] + a[u] <= m){
    			sum[i] += a[u];
    			dfs(u + 1, v);
    			sum[i] -= a[u];
    		}
    	}
    	sum[v] = a[u];
    	dfs(u + 1, v + 1);
    	sum[v] = 0;
    }
    int main(){
    	cin >> n >> m;
    	ans = n;
    	for(int i = 0 ; i < n ; i++){
    		cin >> a[i];
    	}
    	sort(a, a + n, greater<int>());
    	dfs(0, 0);
    	cout << ans << endl;
    	return 0;
    }
    
    

    信息

    ID
    76
    时间
    1000ms
    内存
    128MiB
    难度
    7
    标签
    递交数
    454
    已通过
    115
    上传者