南海石门中学第六届创新班 2015-5-23 课时总结
2016-02-15 19:34
134 查看
临近信息学奥赛,老师便又给我们做了一份历年的试题,而这节课大部分都围绕着这一份题目展开。
题目下载:http://pan.baidu.com/s/1jGipuCm
第一题:牛计数
题目下载:http://pan.baidu.com/s/1jGipuCm
第一题:牛计数
初看这题很简单,但是用普通的做法都会超时。普通的作法,也是一开始我所想到的方法,就是暴力求解。直接从最小的一直算到最大的,然后转换为二进制,最后数一下其中1的个数若不超过4,则把一个计数器变量加一。
但是,题目的最大上限是1.5*10^7。这意味着会超时。我估计时间复杂度大概在O(nlogn)左右(一共循环n次,每一次所需的时间复杂度大致是O(logn),因为单词至少需要logn次,每次加一个数字添加入返回的二进制字符串),而这就意味着差不多是1.05*10^8,运算次数太多,显然会超时。
那么,我们可以怎么做呢?
答案:记忆化,分治,和位运算。
位运算,是计算机的底层运算,所以相对而言较快。具体可见
相关文章推荐
- 南海石门中学第六届创新班 2015-5-30 课时总结
- 数学游戏(mathgame)解题方法 - N皇后位运算解法,14皇后亦在1秒中
- Friend解题报告 - 并查集练习
- Mode用cin的不超时程序
- Tree - NHIP第三题解题报告 - 并查集入门练习
- NHIP(2015)解题报告(第3题)
- IOS引入第三方冲突解决办法
- iOS在线音频播放FreeStreamer
- hdoj5247找连续数【rmq】
- iOS之@selector的函数传递多个参数
- linux下redis安装
- c#里,WebBrowser实现不加载图片等控制
- c#值类型与引用类型,可空类型
- iOS之iOS键盘隐藏
- c语言:用8个2*1的小矩形横着或竖着无重叠地覆盖一个2*8的大矩形,总共有多少种方法?
- 种树郭橐驼传
- 【解决】SOUI向导生成项目(VC2013以上版本编译时)无法运行XP解决
- hdoj5249KPI【set】
- iOS之iOS键盘隐藏
- iframe根据内容自适应高度