C:RMQ算法(求任意子区间内的最大值)(已通过测试)
来源:互联网 发布:淘宝是如何开直通车 编辑:程序博客网 时间:2024/05/16 08:26
#include<math.h>#include<stdio.h>//小白窝不讲题hhhint num=1;int start,end;int dp[1000][1000];int max(int m,int n){if(m>=n) return m;else return n;}int SQRT(int n) //求2的n次方 { int t=n%2; if(n==0) return 1; if(n==1) return 2; else if(t==0) { n/=2;return (SQRT(n)*SQRT(n)); } else { n-=1; return (2*SQRT(n)); } };void RMQ(int num,int zhishu) { for(int j = 1; j <= zhishu; ++j) for(int i = 1;i<=num; ++i) { if(i-1 + (1<<j) > num) { break; } dp[i][j] = max(dp[i][j - 1], dp[i + (1<<(j-1))][j - 1]);//这式子太神了。。。 } }int main(void){printf("请输入An的项,组合键结束\n"); while(scanf("%d",&dp[num][0])!=EOF){ num++;}; printf("请输入查询项数的起点与终点,组合键结束\n"); int j=log(double(num))/log(2.0); RMQ(num,j); while(scanf("%d%d",&start,&end)!=EOF) { int j2=log(end-start+1)/log(2); printf("%d",max(dp[start][j2],dp[end-SQRT(j2)+1][j2])); }}
0 0
- C:RMQ算法(求任意子区间内的最大值)(已通过测试)
- RMQ(区间最大值)
- RMQ 问题 POJ 3264 求解任意指定区间内的最小值和最大值
- RMQ之ST算法(求区间最值问题)
- NYOJ-士兵杀敌(三) 线段树RMQ算法求区间的最大差值
- 求子数组和的最大值算法
- Hust oj 1189 区间最大值 II(线段树RMQ)
- 求区间内最大值问题(线段树)(hdu 1754)
- 【HDU3530】【单调队列(双)】Subsequence 【长度为n的数列,求最长子区间的长度,使得区间的最大值与最小值的差满足一个范围】
- hdu 5289 Assignment(给一个数组,求有多少个区间,满足区间内的最大值和最小值之差小于k)
- hdu1754-线段树(求区间最大值)
- 线段树求区间最大值RMQ(单点更新)
- HDU 5443 The Water Problem(RMQ 求区间最大值)
- HDU 4622 Reincarnation( 任意区间子串的长度, 后缀数组+RMQ)
- 求连续区间最大值的几种较为低效算法
- RMQ算法 (区间最值问题)
- [笔记]: RMQ算法(区间查询)
- RMQ算法 快速求区间最大最小值
- a标签中的javascript:void(0)的作用
- JAVA——第三章——语言基础
- android:background和setImageResource的区别
- Android OkHttp完全解析 是时候来了解OkHttp了
- logstash处理文件进度记录机制
- C:RMQ算法(求任意子区间内的最大值)(已通过测试)
- ural 1009. K-based Numbers - dp
- :: selection
- UVa 793 输入处理+并查集
- (一)Android socket+多线程 实现聊天功能
- 欢迎使用CSDN-markdown编辑器
- (5)CSS选择器详解
- HttpServlet的response和request对象
- Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等