求教下: for (const auto& twin : twins) { int u = twin.u, v = twin.v; // 双生英雄的索引 long long bonus = twin.bonus; // 双生英雄的额外战斗力 // 从后往前更新,避免重复计算 for (int p = 4; p >= 2; p--) { // 从最大 cost 开始更新,确保每个状态只被更新一次 for (int j = C; j >= heroes[u].cost + heroes[v].cost; j--) { // 更新 dp 数组,选择两个双生英雄 dp[p][j] = max(dp[p][j], dp[p - 2][j - heroes[u].cost - heroes[v].cost] + heroes[u].power + heroes[v].power + bonus); } } } 这里怎么保证dp[p - 2][j - heroes[u].cost - heroes[v].cost]不包含heros u或者heros v呢? 如果这其中含有u或者v是不是就意味着这个dp中出现了重复的英雄?
1

相关推荐

01-12 20:31
东北大学 Java
点赞 评论 收藏
分享
02-16 01:39
南昌大学 Java
重剑Ds:感觉不太可能 后端都减飞了 根本不缺人
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务