蓝桥杯

蓝桥杯,第1张

蓝桥杯

//
Q: 长度为 n 的数组 q 次询问 区间最大值

1<=n,q<=5e5;
1<=l<=r<=n;
-1e9<=k,ai<=1e9;

样例输入
5 5
1 2 3 4 5
1 1 
1 2 
1 3
3 4
2 5

样例输出
1
2
3
4
5

//
A:
#include
using namespace std;

// 1<=n,q<=5e5
const int MAXN=1e6+7;

// printf("%lfn",log2(1e6)); == 19.931569 
int a[MAXN],dp_max[MAXN][30];  
int n,q;

// int group=(int)log2(n);
// int group=(int) ( log( (double)n ) / log( (double)2 ) );

// i: 以 i 为起始点的数组区间 j: 2^j 数组区间长度

// 1+2^k<=n+1 == 2^k<=n 消去干扰源

void st_init()
{
    int i,j,group=(int)log2(n);
    memset( dp_max,0,sizeof( dp_max ) );    //

    for( i=1;i<=n;i++ ) dp_max[i][0]=a[i];

    for( j=1;j<=group;j++ )
    {
        for( i=1; i+(1< 

//
find: 
01 memset()初始化数组 (多组数据)
02 能不能从下标为0开始呢?
03 得学哈希

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5718773.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存