这个题目直接暴力,还是有点难想,我没有想出来,有点思维。
#include <cstdio> #include <cstdlib> #include <cstring> #include <queue> #include <vector> #include <string> #include <algorithm> #include <iostream> #include <map> #include <list> #define inf 0x3f3f3f3f #define inf64 0x3f3f3f3f3f3f3f3f using namespace std; typedef long long ll; const int maxn = 1e6 + 10; int a[110], vis[110]; int sum[110]; int main() { int n, k, m, ans = 0, sum = 0; scanf("%d%d%d", &n, &k, &m); for (int i = 1; i <= k; i++) { scanf("%d", &a[i]); sum += a[i]; } sort(a + 1, a + 1 + k); for (int i = 0; i <= n; i++) { int res = m - i * sum; if (res < 0) break; int num = (k + 1)*i; for (int j = 1; j <= k; j++) { if (res >= a[j] * (n - i)) { res -= a[j] * (n - i); num += n - i; } else { num += res / a[j]; break; } } ans = max(ans, num); } printf("%d\n", ans); return 0; }