解答本题需要一定的动态规划知识.
vector<pair<int, int>> pre[i];// pre[i][j]表示第j个在i时刻结束的会议
// pre[i][j].first表示这个会议的开始时间,pre[i][j].second表示这个会议的结束时间
int dp[366] = {};
// dp[t]表示0到t时刻最多能得到的促进值的和
for (int t = 0; t <= 365; ++t) {
if (t > 0 && dp[t] < dp[t - 1]) {
dp[t] = dp[t - 1];
}
for (unsigned j = 0; j < pre[i].size(); ++j) {
int s = pre[t][j].first, w = pre[t][j].second;
int pre_w = s == 0 ? 0 : dp[s - 1];
if (pre_w + w > dp[t]) {
dp[t] = pre_w + w;
}
}
}
return dp[365];