本周学习了贪心算法的较难类型题目,通过讲解多种题型,便于使我们了解贪心算法求最优解的合适方法。在贪心算法中,由于数据太多,我们通常首先要做的就是排序,因此我们对于需要两组数据排序的题可以建立倒序数组,这样便于使数组首尾元素对应,也可以使用双指针对首位元素进行标记,以达到相同目的。我们开始学习了背包问题,这个问题关键在于要同时兼顾重量和价值,对于这种兼顾两点的问题,我们可以选择计算其性价比,然后对性价比排序,进而使用贪心算法,求出最优解。在贪心算法过程中,我们还应该多多使用STL函数库,这样可以加快我们写程序的时间,也使用方便。对于分发饼干问题,我们考虑的是是最多的孩子得到满足,所以我们应该对饼干大小进行倒序排列,以此来和孩子胃口实现一一对应,但应该要注意的是,在改程序中,该孩子不管是不是得到满足,每次执行完之后都应该使孩子数移动到下一个孩子。对于整数区间问题,该题学到的思路是首先对于这种问题,应该先对区间排序,将该区间的上限与下个区间的下限作比较,如果该区间的上限大于下个区间的下限,则说明了该区间的范围可以包括到下个区间,如果该区间的上限小于下个区间的下限,这时我们应该切换到下个区间继续做类似的比较以达到最优解问题。而有些问题则告诉我们输入若干组数据时,我们可以用while(cin>>N)或者while(scanf("%d",&N!=NOF)),这样可以达到一直输入的效果。对于做作业问题,我们学到该类型题应该优先考虑时间,同时注意到扣分状况,如果要扣的分数高的话,可以适当替换前面扣分少的。对于选课问题,我们学到应该针对这类型题中所提及的选课时间间隔进行排序,然后将其分为多组数据,例如选课间隔为五分钟,就可以分为五组数据,选课间隔有十分钟,就可以分为十组数据,但应该注意,每组数据执行完后都应该进行初始化设置。最后学习了物理碰撞合成一个物体的问题,对于这类两组数据合成一组数据且该数据减小的问题,我们可以使质量大的问题碰撞,进而使其丢失的质量变大,但应注意该两个物体合成一个物体后,质量不一定还是最大的,因此,这是一道动态排序问题,我们应该使用优先队列来解决,使其每次碰撞后都应该重新排列。通过本周的学习,我学到了,对于贪心算法问题,我们如果一时间看不出最优解,我们可以按普通解法来解,然后在写普通解法的时候可以看看哪个步骤可以简化,哪个步骤可以省略,以此最快找出贪心策略,如果有出现除法运算,我们应该将其转化为乘法运算,当需要输入若干组数据,可以用while。