#include <bits/stdc++.h>
using namespace std;
long long c[505], l[505], f[10005][505];
int main()
{
int n, L;
long long sum = 0LL;
scanf("%d%d", &n, &L);
for (register int i = 1; i <= n; i++) {
scanf("%lld%lld", &c[i], &l[i]);
sum += c[i];
}
for (register long long k = 1; k <= sum; ++k) {
for (register int i = 1; i <= n; ++i) {
for (register int j = k; j >= 0; --j) {
if (j >= c[i]) {
f[k][j] = max(f[k][j], f[k][j - c[i]] + l[i]);
}
else {
f[k][j] = f[k][j];
}
}
}
if (f[k][k] >= L) {
printf("%lld\n", k);
return 0;
}
}
printf("no solution\n");
return 0;
}
条了一年多了,球球大佬康康下吧,TLE on #4
recode