证明方法
(1.)反证法:交换当前状态下的两个元素后,答案不会变得更优,则当前状态已经是最优解
(2.)归纳法:先证明边界(n=1)成立,再证明(F_n)成立时(F_{n+1})成立
常见类型
交换邻项排序贪心
例题
设(p_1)的参数为(a_1,b_1),(p_2)的参数为(a_2,b_2)
当(p_1)在前时,(ans_1=max{frac{s}{b_1},frac{s*a_1}{b_2}})
当(p_2)在前时,(ans_2=max{frac{s}{b_2},frac{s*a_2}{b_1}})
若(p_1)在前比(p_2)在前代价更大,则
[ans_1>ans_2\
max{frac{s}{b_1},frac{s*a_1}{b_2}}>max{frac{s}{b_2},frac{s*a_2}{b_1}}\
]
若(frac{s}{b_1}>frac{s*a_1}{b_2}),则(ans_2=frac{s*a_2}{b_1}>frac{s}{b_1})不成立
所以(frac{s*a_1}{b_2}>frac{s}{b_1}),且(frac{s*a_1}{b_2}>frac{s}{b_2})
那么满足(p_1)在前代价更大的条件是
[frac{s*a_1}{b_2}>frac{s}{b_1}\
frac{s*a_1}{b_2}>frac{s*a_2}{b_1}
]
解得
[a_1*b_1>a_2*b_2
]
所以只要将大臣们按(a_i*b_i)从小到大排序即可
反悔贪心
[USACO09OPEN]Work Scheduling G
先假设所有工作都做,按截止时间排序后入队
判断第(i)项做不做时,若任务安排满了,则判断能否替换当前价值最小的已做的工作