数据过水?
查看原帖
数据过水?
726139
残阳如血楼主2024/9/4 21:12

rt.

O(ans×n)O(\text{ans}\times n) 的做法能过,而且效率不错?

#include <bits/stdc++.h>
const int N = 100, M = 2e6 + 10;

int f[M];
int k, n, ans, a[N];

int main() {
  memset(f, -1, sizeof(f));
  scanf("%d%d", &k, &n), f[0] = 0;
  for (int i = 1; i <= n; ++i) scanf("%d", a + i);
  for (int i = 1; i < M; ++i) {
    for (int j = 1; j <= n; ++j) {
      if (i - a[j] < 0) continue;
      if (f[i - a[j]] == -1) continue;
      if (f[i - a[j]] + 1 > k) continue;
      if (f[i] == -1) f[i] = f[i - a[j]] + 1;
      else f[i] = std::min(f[i], f[i - a[j]] + 1);
    }
    if (~f[i]) ++ans;
    else break;
  }
  std::cout << ans << std::endl;
  return 0;
}
2024/9/4 21:12
加载中...