这一周的练习也是以贪心算法的练习为主,在周四打了一场codeforce的练习赛,对于练习赛来说这次的题目不是很难,和寒假的时候差不太多,但是因为很久没做了,还是有一点生疏。主要出现的问题还是代码的能力比较差,第三题应该使用STL中的string但是忘记怎么用了。还有就是一二题提交的次数过多,虽然最终做出回来了,但是每个题都提交了三四次。所以以后还需要使用多种不同的代码方式来写题,扩展自己的代码储备。
再就是对贪心算法的练习,通过这周的贪心算法感觉贪心算法主要适用于这几类的题目。
1、求最优装载问题
这种单变量题目相对简单就是sort&struct的使用来进行排序字后在进行装载,这种题目还有变形,不仅仅是有一个变量,或许会有两个变量、甚至更多,比如求书包可以承载的最大价值。那个我们既要考虑物体所占的空间,又要考虑物体本身的价值,那么我们就可以根据性价比来进行排序。
2、区间调度问题
这种题目来说就是给你几个区间的工作,你在做这个工作的同时,不可以做其他的工作,这种问题来说我们从区间开头排序的话不是很容易。所以我们按照区间结束的早晚来进行排序。这是我们在找第一个结束,来寻找开头在第一个结束之后,而又相对较早结束的下一个区间开始。如此循环我们就可以找到最长的区间。这个题还有另一种说法可以每一个区间至少有一个整数属于该集合。这个题还有一个变形,每个区间至少两个。比如贪心算法第T题 https://vjudge.net/contest/426531#problem/T
答案:
https://vjudge.net/contest/426531#status/Lijingchen/T/1/
还有雷达问题:https://blog.csdn.net/qq_51769081/article/details/115187503?spm=1001.2014.3001.5501
3、几个运行较快的小技巧:
如果你使用if语句来判断奇偶数的时候,使用这个可以加快代码的运行速率:
//按位操作。
if(!(n&1))//如果是偶数;
if((n&1))//如果是奇数;
!=EOF:有效输入:EOF相当于符号常量0;
while(cin>>n!=EOF)
4、做题方法
正难反易:
如果你的思路在正方向中感觉到不是很容易,可以从反向来思考。
如果你在做题中感觉这个思路没有啥问题,你可以仔细检查一下自己代码,或许就找到错了,若果还不行多带几组数据慢慢寻找自己的错误,还可以通过输出中间变量的方法来查看你的代码那一部分出现了问题。如果还没有就来思考自己的思路有啥问题,换一个思路换一个想法。