3 条题解
-
1
……
>﹏<
只给了80分
wuwuwuwuwuwuwuwwuwuwuwuwu(此处省略1万个wu)
算了,给多少算多少,附上80分代码:
听取WA声一片( ̄_ ̄|||)
#include<bits/stdc++.h> using namespace std; int n,m,k; int a[20+10]; int main(){ freopen("shelf.in","r",stdin); freopen("shelf.out","w",stdout); cin>>n>>k; for(int i=1; i<=n; i++)cin>>a[i],m+=a[i]; sort(a+1,a+n+1); int f[m+1]; f[0]=1; for(int i=1;i<=n;i++){ for(int j=k;j>=0;j--){ if(f[j]==1){ f[j+a[i]]=1; } } } for(int i=k;i<=m;i++){ if(f[i]==1){ cout<<i-k<<endl; return 0; } } return 0; }
正努力AC! -
0
记录详情 - JMYSOJ (jmfes.com) 包AC的
```#include #include <bits/stdc++.h> using namespace std; int n, b; int a[30]; int minn = 1e9; int per[15]; //u表示处理到的数字下标,sum表示已经选取的数字和 void dfs (int u, int sum){ if(sum >= b && sum <= minn){ minn = sum; return; } for(int i = u; i <= n; i ++){ dfs(i + 1, sum + a[i]); } } int main(){ freopen("shelf.in", "r", stdin); freopen("shelf.out", "w", stdout); cin >> n >> b; for(int i = 1; i <= n; i ++){ cin >> a[i]; } dfs(1, 0); cout << minn - b; return 0; }
-
0
#include<bits/stdc++.h> #define int long long const int inf = 0x3f3f3f3f; const int N = 1e6 + 1; using namespace std; int hqt[N]; int n , b; int zhou = inf; bool pei[N]; void dfs(int l,int step , int sum){ if(step > n){ return; } if(sum >= b){ zhou = min(zhou , sum - b); return; } for(int i = l ; i <= n ; i ++){ if(pei[i]){ continue; } pei[i] = true; dfs(i,step + 1 , sum + hqt[i]); pei[i] = false; } } signed main(){ freopen("shelf.in" , "r" , stdin); freopen("shelf.out" , "w" , stdout); cin >> n >> b; for(int i = 1 ; i <= n ; i ++){ cin >> hqt[i]; } dfs(1 , 0 , 0); cout << zhou; return 0; }
- 1
信息
- ID
- 531
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 134
- 已通过
- 29
- 上传者