// 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: #includeusing 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 得学哈希欢迎分享,转载请注明来源:内存溢出
评论列表(0条)