RMQ 区间最大值最小值 最频繁次数
区间的最大值和最小值
- #include <cstdio>
- #include <cstring>
- #include <cmath>
- #include <iostream>
- using namespace std;
- const int MAXN = ;
- int n,query;
- int num[MAXN];
- int F_Min[MAXN][],F_Max[MAXN][];
- void Init()
- {
- for(int i = ; i <= n; i++)
- {
- F_Min[i][] = F_Max[i][] = num[i];
- }
- for(int i = ; (<<i) <= n; i++) //按区间长度递增顺序递推
- {
- for(int j = ; j+(<<i)- <= n; j++) //区间起点
- {
- F_Max[j][i] = max(F_Max[j][i-],F_Max[j+(<<(i-))][i-]);
- F_Min[j][i] = min(F_Min[j][i-],F_Min[j+(<<(i-))][i-]);
- }
- }
- }
- int Query_max(int l,int r)
- {
- int k = (int)(log(double(r-l+))/log((double)));
- return max(F_Max[l][k], F_Max[r-(<<k)+][k]);
- }
- int Query_min(int l,int r)
- {
- int k = (int)(log(double(r-l+))/log((double)));
- return min(F_Min[l][k], F_Min[r-(<<k)+][k]);
- }
- int main()
- {
- int a,b;
- scanf("%d %d",&n,&query);
- for(int i = ; i <= n; i++)
- scanf("%d",&num[i]);
- Init();
- while(query--)
- {
- scanf("%d %d",&a,&b);
- printf("区间%d到%d的最大值为:%d\n",a,b,Query_max(a,b));
- printf("区间%d到%d的最小值为:%d\n",a,b,Query_min(a,b));
- printf("区间%d到%d的最大值和最小值只差为:%d\n",a,b,Query_max(a,b)-Query_min(a,b));
- }
- return ;
- }
区间内出现次数最多的数字出现的次数
- #include <cstdio>
- #include <cmath>
- #include <algorithm>
- using namespace std;
- const int maxn = ;
- int num[maxn], f[maxn], MAX[maxn][];
- int n;
- int max(int a,int b)
- {
- return a>b ? a:b;
- }
- int rmq_max(int l,int r)
- {
- if(l > r)
- return ;
- int k = log((double)(r-l+))/log(2.0);
- return max(MAX[l][k],MAX[r-(<<k)+][k]);
- }
- void init()
- {
- for(int i = ; i <= n; i++)
- {
- MAX[i][] = f[i];
- }
- int k = log((double)(n+))/log(2.0);
- for(int i = ; i <= k; i++)
- {
- for(int j = ; j+(<<i)- <= n; j++)
- {
- MAX[j][i] = max(MAX[j][i-],MAX[j+(<<(i-))][i-]);
- }
- }
- }
- int main()
- {
- int a, b, q;
- while(scanf("%d",&n) && n)
- {
- scanf("%d",&q);
- for(int i = ; i <= n; i++)
- {
- scanf("%d",&num[i]);
- }
- sort(num+,num+n+);
- for(int i = ; i <= n; i++)
- {
- if(i == )
- {
- f[i] = ;
- continue;
- }
- if(num[i] == num[i-])
- {
- f[i] = f[i-]+;
- }
- else
- {
- f[i] = ;
- }
- }
- init();
- for(int i = ; i <= q; i++)
- {
- scanf("%d%d",&a,&b);
- int t = a;
- while(t<=b && num[t]==num[t-])
- {
- t++;
- }
- int cnt = rmq_max(t,b);
- int ans = max(t-a,cnt);
- printf("%d\n",ans);
- }
- }
- return ;
- }
- /*
- 10 3
- -1 -1 1 2 1 1 1 10 10 10
- 2 3
- 1 10
- 5 10
- */
RMQ 区间最大值最小值 最频繁次数的更多相关文章
- RMQ 区间最大值 最小值查询
/*RMQ 更新最小值操作 By:draymonder*/ #include <iostream> #include <cstdio> using namespace std; ...
- POJ3264 Balanced Lineup 线段树区间最大值 最小值
Q个数 问区间最大值-区间最小值 // #pragma comment(linker, "/STACK:1024000000,1024000000") #include <i ...
- RMQ区间最大值与最小值查询
RMQ复杂度:建表$O\left ( nlgn \right ) $,查询$O\left ( 1 \right )$ ll F_Min[maxn][20],F_Max[maxn][20]; void ...
- dutacm.club 1094: 等差区间(RMQ区间最大、最小值,区间GCD)
1094: 等差区间 Time Limit:5000/3000 MS (Java/Others) Memory Limit:163840/131072 KB (Java/Others)Total ...
- poj 3264 区间最大最小值 RMQ问题之Sparse_Table算法
Balanced Lineup Time Limit: 5000 MS Memory Limit: 0 KB 64-bit integer IO format: %I64d , %I64u Java ...
- Tunnel Warfare (区间合并|最大值最小值巧妙方法)
Tunnel Warfare http://acm.hdu.edu.cn/showproblem.php?pid=1540 Time Limit: 4000/2000 MS (Java/Others) ...
- RMQ区间最值查询
RMQ区间最值查询 概述 RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A, 回答若干询问RMQ(A,i,j)(i,j<= ...
- poj 3264 线段树 求区间最大最小值
Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same ...
- hdu 3183 A Magic Lamp RMQ ST 坐标最小值
hdu 3183 A Magic Lamp RMQ ST 坐标最小值 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3183 题目大意: 从给定的串中挑 ...
随机推荐
- Oracle诊断:drop table失败[转]
转: From <http://blog.csdn.net/cyxlxp8411/article/details/7775113> 今天在drop一张表的时候报ORA-00054错误 SQ ...
- Codeforces Aim Tech Round4 (Div2) D
题目链接: 题意: 给你一个严格升序的单链表,但是是用数组来存放的.对于每一个位置来说,你可以知道这个位置的值和下一个的位置.你每一个可以询问一个位置,机器会告诉你这个位置的值,和下一个位置的指针.要 ...
- 清北学堂2019.7.18 & 清北学堂2019.7.19
Day 6 钟皓曦 经典题目:石子合并 可以合并任意两堆,代价为数量的异或(^)和 f[s]把s的二进制所对应石子合并成一堆所花代价 枚举s的子集 #include<iostream> u ...
- fiddler之入门(安装配置)
在工作中常常需要进行数据的抓包和发包,此时就可以用到fiddler这个工具了. fiddler是一个http协议调试代理工具,通过http代理,让数据从其通过,来坚挺本地计算机与访问网络之间的所有ht ...
- C#与Java覆盖问题
C#继承类中如含有相同的方法,避免冲突使用new关键字.在不同对象中分别对应该方法.若使用override关键字则,基类中的方法被覆盖. 如需调用非覆盖的则使用base关键字. Java中的继承类方法 ...
- CSS3——表单 计数器 网页布局 应用实例
CSS应用实例 表单 实例 输入框样式 输入框填充-----内边距 输入框------边框 输入框-----颜色 输入框-----聚焦 输入框-------图标 输入框------动画 [自动右滑] ...
- 【ABAP系列】SAP ABAP 从FTP服务器读取文件到本地
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 从FTP服务器 ...
- 【ABAP系列】SAP Web Dynpro 技术简介
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP Web Dynpro 技 ...
- CNN文本分类
CNN用于文本分类本就是一个不完美的解决方案,因为CNN要求输入都是一定长度的,而对于文本分类问题,文本序列是不定长的,RNN可以完美解决序列不定长问题, 因为RNN不要求输入是一定长度的.那么对于C ...
- 【linux开发】apt源设置
不同的网络状况连接以下源的速度不同, 建议在添加前手动验证以下源的连接速度(ping下就行),选择最快的源可以节省大批下载时间. 首先备份源列表: sudo cp /etc/apt/sources.l ...