2 条题解
-
0
#include <bits/stdc++.h> using namespace std; const int N = 2e6; int f[N + 10], a[60]; int main() { int k, n; scanf("%d%d", &k, &n); for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); } memset(f, 0x0f, sizeof(f)); f[0] = 0; for (int i = 1; i <= n; i++) { for (int j = a[i]; j <= N; j++) { if (f[j - a[i]] + 1 <= k) { f[j] = min(f[j], f[j - a[i]] + 1); } } } for (int i = 1; i <= N; i++) { if (f[i] == 0x0f0f0f0f) { printf("%d\n", i - 1); return 0; } } return 0; } -
0
#include<bits/stdc++.h> using namespace std; const int N=2e6; int f[N+10],a[60]; int main() { int k,n;scanf("%d%d",&k,&n); for(int i=1;i<=n;i++)scanf("%d",&a[i]); memset(f,0x0f,sizeof(f));f[0]=0; for(int i=1;i<=n;i++) { for(int j=a[i];j<=N;j++) if(f[j-a[i]]+1<=k) f[j]=min(f[j],f[j-a[i]]+1); } for(int i=1;i<=N;i++) { if(f[i]==0x0f0f0f0f) { printf("%d\n",i-1); return 0; } } return 0; }
- 1
信息
- ID
- 1019
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- 递交数
- 71
- 已通过
- 30
- 上传者