重温贪心
Tags: OI Categories: 学习
恰逢 H 国国庆,国王邀请
国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序,使得获得奖赏最多的大臣,所获奖赏尽可能的少。注意,国王的位置始终在队伍的最前面。
首先,先画一个草图,
我们要知道
我们先假设他们可以交换。故交换后有,
然后我们根据题目,可以计算他们交换前后的值,
由于前面的值不会影响此处
故
由于我们不难判断,
则交换需要满足的条件为
故第
bool cmp(node A, node B) {
/* 这里的 A 相当于第 n + 1 项. */
return A.a * A.b < B.a * B.b;
}
int main() {
/* 贪心重新排序. */
sort(a + 1, a + n + 1, cmp);
}
从上面的题我们可以看出,贪心本质上是假设每一步行动都是最优,且最后结果也是最优。
适用范围:最优子结构问题,即子问题最优解能够递推到总问题最优解;
Last updated: 2025-01-29