您的位置:首页 > 其它

南海石门中学第六届创新班 2015-5-23 课时总结

2016-02-15 19:34 134 查看
临近信息学奥赛,老师便又给我们做了一份历年的试题,而这节课大部分都围绕着这一份题目展开。
题目下载:http://pan.baidu.com/s/1jGipuCm
第一题:牛计数
初看这题很简单,但是用普通的做法都会超时。普通的作法,也是一开始我所想到的方法,就是暴力求解。直接从最小的一直算到最大的,然后转换为二进制,最后数一下其中1的个数若不超过4,则把一个计数器变量加一。
但是,题目的最大上限是1.5*10^7。这意味着会超时。我估计时间复杂度大概在O(nlogn)左右(一共循环n次,每一次所需的时间复杂度大致是O(logn),因为单词至少需要logn次,每次加一个数字添加入返回的二进制字符串),而这就意味着差不多是1.05*10^8,运算次数太多,显然会超时。
那么,我们可以怎么做呢?
答案:记忆化,分治,和位运算。
位运算,是计算机的底层运算,所以相对而言较快。具体可见
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: