本学期能够参加星云俱乐部的学习,感到十分的开心,但是也十分忐忑。在这里,真的是高手如云,看到了曾经一起参加比赛的同学,因为对于信息奥赛的坚持而汇集在星云俱乐部。这里的老师认真负责,计算机水平也十分的高,在老师的指导下,我不断挑战自己,一道道题目在老师的指导下,我从完全听不懂到部分听得懂,我知道我还有很多算法需要学习。这次期末测试,我的得分也不是很理想,赛后我仔细研究了老师的正确解法,发现比我的方法要更高效和巧妙。
比如第一题——超电磁炮
题目需要求log2(n)向上取整的值,我的思路是每次让1左移ans位,如果左移后的值小于n,就把ans加一,知道左移后的值大于等于n。而答案的解法是每次让n除以2向上取整再记录次数,我比较了两个代码的不同,两种算法都实现了求log2(n)向上取整的功能,且都采用了二分的思想,但是实现的细节有所不同,在我的算法中,从1开始,每次通过左移ans来使答案翻倍,直到它不再小于n。在答案的算法中,n每次右移一位并向上取整,直到它小于等于1。尽管我们的时间复杂度都一样,但是在我的算法中我总共进行了O((log2(n))²)次左移,而标准算法中只进行了O(log2(n))次右移,我想应该是这里使我的程序没有拿到满分。
后面的题目我就不再一一列举了。在后面的学习中我会更加认真努力,争取在下次考试中取得好成绩。