1174 区间中最大的数

题目



解题思想


/*
rmq(动态规划思想)
*/

代码


#include<iostream>
#include<math.h>
using namespace std;
int m[10005][20];
int n;
//初始化
void work()
{
    for(int j=1; 1<<j<=n; ++j)
        for(int i=1; i+(1<<j)-1<=n; ++i)
        m[i][j] = max(m[i][j-1], m[i+(1<<(j-1))][j-1]);
}
//查询
int question(int z, int y)
{
    int x = (int)(log(y-z+1)/log(2));
    return max(m[z][x], m[y-(1<<x)+1][x]);

}
int main()
{
    cin >> n;
    int i,a,b,k;
    for(int i=1; i<=n; ++i)
        cin >> m[i][0];
    work();
    cin >> k;
    for(i=1; i<=k; ++i)
    {
       cin >> a >> b;
       cout << question(a+1,b+1) <<endl;
    }
    return 0;
}

全部评论

相关推荐

牛客279957775号:铁暗恋
点赞 评论 收藏
分享
和蔼:在竞争中脱颖而出,厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务