题目大意:有两个任务,每个任务分成M块,有K个工人,给出每个工人完成每个任务每块所需要花费的时间,问同时完成任务时,至少需要花费多少时间
解题思路:用dp[i][j]表示用前i个工人完成第一个任务的j块时,能完成第二个任务的多少块
接着二分时间,再枚举工人,假设枚举到时间为mid,第i个工人,要求完成k块任务
则dp[i][j] = max(dp[i][j], (mid - k * timeA[i]) / timeB[i] + dp[i][j - k])
表示第i个工人完成第一个任务的k块后,剩余的时间去完成B任务了
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 110;
int a[N], b[N], dp[N];
int n, m, cas =