栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 3368 Frequent values

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 3368 Frequent values

#include<stdio.h>#include<math.h>int num[100010],f[100010],MAX[100010][20];int n;int max(int a,int b){    return a>b?a:b;}void ST(){    int i,j,k;    for(i=1;i<=n;i++)        MAX[i][0]=f[i];    k=log((double)(n+1))/log(2.0);    for(j=1;j<=k;j++)        for(i=1;i+(1<<j)-1<=n;i++) MAX[i][j]=max(MAX[i][j-1],MAX[i+(1<<(j-1))][j-1]);}int rmq_max(int l,int r){    if(l>r)        return 0;    int k=log((double)(r-l+1))/log(2.0);    return max(MAX[l][k],MAX[r-(1<<k)+1][k]);}int main(){    int q,i,a,b;    while(scanf("%d",&n)&&n)    {        scanf("%d",&q);        for(i=1;i<=n;i++)        { scanf("%d",&num[i]); if(i==1) {     f[i]=1;     continue; } if(num[i]==num[i-1])     f[i]=f[i-1]+1; else     f[i]=1;        }        ST();        for(i=1;i<=q;i++)        { scanf("%d%d",&a,&b); int t=a; while(t<=b&&num[t]==num[t-1])     t++; int cnt=rmq_max(t,b); int ans=max(t-a,cnt); printf("%dn",ans);        }    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/374040.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号