poj-3368 Frequent values 线段树
来源:互联网 发布:淘宝买二手吉他靠谱吗 编辑:程序博客网 时间:2024/06/05 15:59
题目链接
#include "stdio.h"#include "math.h"#include "string.h"#include "algorithm"using namespace std;const int maxn = 100005;int n,m,x,y,ans;int num[maxn];struct node{int mmax,lmax,rmax;int ln,rn;}tree[maxn<<2];void PushUp( int rt ){tree[rt].ln = tree[rt<<1].ln;tree[rt].rn = tree[rt<<1|1].rn;tree[rt].mmax = max( tree[rt<<1].mmax,tree[rt<<1|1].mmax );tree[rt].lmax = tree[rt<<1].lmax;tree[rt].rmax = tree[rt<<1|1].rmax;if( tree[rt<<1].rn == tree[rt<<1|1].ln ){tree[rt].mmax = max( tree[rt].mmax,tree[rt<<1].rmax + tree[rt<<1|1].lmax );if( tree[rt<<1].ln == tree[rt<<1|1].ln )tree[rt].lmax = tree[rt<<1].lmax + tree[rt<<1|1].lmax;if( tree[rt<<1].rn == tree[rt<<1|1].rn )tree[rt].rmax = tree[rt<<1].rmax + tree[rt<<1|1].rmax;}}void BuildTree( int rt,int ld,int rd ){if( ld == rd ){tree[rt].mmax = tree[rt].lmax = tree[rt].rmax = 1;tree[rt].ln = tree[rt].rn =num[ld];return;}int mid = (ld+rd)>>1;BuildTree( rt<<1,ld,mid );BuildTree( rt<<1|1,mid+1,rd );PushUp( rt );}int query( int rt,int ld,int rd ){if( x <= ld && rd <= y ){return tree[rt].mmax;}if( x > rd || y < ld )return 0;int mid = ( ld+rd )>>1;int Max = max( query( rt<<1,ld,mid ),query( rt<<1|1,mid+1,rd ));if( tree[rt<<1].rn == tree[rt<<1|1].ln && x <= mid && y > mid ){Max = max( Max,min( tree[rt<<1].rmax,mid-x+1 ) + min( tree[rt<<1|1].lmax,y-mid) );}return Max;}int main(){//freopen("data.txt","r",stdin);while( scanf("%d",&n) != EOF,n ){scanf("%d",&m);for( int i = 1; i <= n; i ++ ){scanf("%d",&num[i]);}BuildTree( 1,1,n );for( int i = 1; i <= m; i ++ ){scanf("%d%d",&x,&y);ans = 0;printf("%d\n",query( 1,1,n ));}}return 0;}
0 0
- poj 3368 Frequent values //线段树
- poj 3368 --Frequent values 线段树
- POJ 3368 Frequent values RMQ / 线段树
- poj 3368 Frequent values(线段树)
- POJ 3368 Frequent values 线段树
- poj 3368 Frequent values#线段树
- POJ 3368 Frequent values 线段树
- POJ 3368 Frequent values(线段树)
- poj-3368 Frequent values 线段树
- poj 3368 Frequent values(线段树)
- POJ 3368 Frequent values(线段树)
- 【poj 3368 】 Frequent values 线段树应用
- poj 3368 Frequent values 线段树
- poj 3368 Frequent values 线段树
- POJ 3368 Frequent values 线段树 || RMQ
- poj-3368-Frequent values-(线段树)
- poj 3368 Frequent values解题报告【线段树】
- poj 3368 Frequent values(线段树+离散化) -
- 排序算法之归并排序
- No enclosing instance of type ThreadTest is accessible.错误解决
- 线性表----队列(链接表示)的基本操作
- 【深度探索STL】特殊容器 string
- 【数据库视频】耿建玲VS自考
- poj-3368 Frequent values 线段树
- uva 12260 Free Goodies DP+一点点贪心
- 为PHP摇旗呐喊!
- oc类命名规范
- Android Intent使用
- 项目团队提高企业软件质量的N种手段
- Servlet+监听器+注解+EL表达式
- iOS随机数的生成
- 粒子滤波(PF:Particle Filter与卡尔曼滤波(Kalman Filter)相比较 (转载)