python rmq
来源:互联网 发布:局内Windows无法访问 编辑:程序博客网 时间:2024/06/03 20:34
import mathdef init( arr ): arr_len = len( arr ) exp = int( math.log( arr_len, 2 ) ) DP = [ [ 0 for col in range( exp + 1 ) ] for row in range( arr_len + 1 ) ] for index, item in enumerate( arr ): DP[index + 1][0] = item for e in range( 1, exp + 1 ): for start in range( 1, arr_len + 1 ): if start + ( 1 << e ) - 1 > arr_len: break DP[start][e] = max( DP[start][e - 1], DP[start + ( 1 << ( e - 1 ) )][e - 1] ) return DPdef ask( DP, left, right ): cut = int( math.log( right - left + 1, 2 ) ) return max( DP[left][cut], DP[right + 1 - ( 1 << cut )][cut] )DP = init( [ 3, 4, 1, 6, 7, 2, 10 ] )print( ask( DP, 1, 1 ) )print( ask( DP, 1, 2 ) )print( ask( DP, 1, 7 ) )
0 0
- python rmq
- RMQ
- RMQ
- RMQ
- RMQ
- RMQ
- RMQ
- RMQ
- RMQ
- RMQ
- rmq
- RMQ
- RMQ
- RMQ
- RMQ
- RMQ
- RMQ
- RMQ
- 【CS】高斯模糊GaussianBlur原理与实践
- 汉诺塔
- 对重构的理解
- Linux yum命令以及centOs安装jdk、tomcat、mysql
- oracle手注
- python rmq
- 【QT】QT4.8.6静态编译
- 51nod 最长公共子序列 (DP+回溯)
- 浅谈计算机中的存储模型(二)物理内存
- ARM 关键几个寄存器
- (一)程序设计的基本知识
- Activity 生命周期
- TDD相关测试框架
- iOS7的statusBar和navigationBar