这个周看了一些贪心的题的博客,全是题再加题解,感觉就是想出解决方法比较难,思路难想,但是代码看起来比较容易,(能看懂),有的题结合之前的sort排序,拓扑排序,深搜,广搜,二分,并查集,队列,数组,stl。
贪心算法就是每一步都选择最优解,某个状态以后的过程不会影响以前的状态,所以贪心算法适用的题目是没有后效性的。
排序最常用的是sort排序sort(begin,end,cmp)第三个可以省略。
二分查找
往左查找目标:
while (l < r)
{
int mid = l + r >> 1; //(l+r)/2
if (check(mid)) r = mid; // check()判断mid是否满足性质
else l = mid + 1;
}
往右查找目标:
while (l < r)
{
int mid = l + r + 1 >> 1; //(l+r+1)/2
if (check(mid)) l = mid;
else r = mid - 1;
}