第二周 acm学习周记
这个周主要学习了贪心算法,这是一个很神奇的算法。主要解决最优解的问题。(可以先从局部考虑)
首先我们可以把贪心算法分为如下几类:
1.最优装载问题:最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。既然体积不受限制,只受质量限制,那可知从质量小的集装箱开始选取。可以用bool cmp。
2.背包问题包括内个牛吃花:其实两者都是充满着多个变量及不可控的因素,这些都不能只考虑其一这样得到的并不是全局最优解,而是局部的。所以针对这种情况考虑问题要全面。有时候除法尽量转换为乘法,避免数据类型不一致。
3.货币找零:每一步尽量用面值大的来支付。
4.区间调度问题:还有活动选择问题都是要选择结束时间早的并且还要根据一种方式进行选择。pair<int, int> itv[n];//对工作排序的pair数组。
5.分发饼干:将大饼干分发给胃口大的。
while(scanf("%d",&N)!=EOF)或者while(cin>>n)为多组测试数据的输入结束时要进行特殊的输入,如ctrl+z。
这个周题做的不多要抓紧时间来做题以提高自己的熟练度。还有在考虑贪心算法时不要总是先想着怎么能选择出标准而是要分析以什么因素考虑,如想不出可以从最简单的例子入手来慢慢检验,再举反例的同时便能找着突破口与方向。