Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <cstring>using namespace std;typedef long long ll;ll Q, M, N, K, T, ans[10005], A[105], B[105];ll dp(ll d){ll b;memset(ans, 0xFF, sizeof(ans));ans[0] = 0;for(int i = 0; i < M; i++){b = B[i] / d;for(int j = 0; j <= K; j++){int idx = min(j + b, K);if(ans[j] == -1LL){continue;}if(ans[idx] == -1LL){ans[idx] = ans[j] + A[i];}else{ans[idx] = min(ans[idx], ans[j] + A[i]);}}}return ans[K];