社区讨论
关于上溢
P2251质量检测参与者 2已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lo8osza3
- 此快照首次捕获于
- 2023/10/27 22:06 2 年前
- 此快照最后确认于
- 2023/10/27 22:06 2 年前
数组
CPPf[MAXN][32]在赋初值的时候上溢但是也AC了,求解#include <bits/stdc++.h>
#define MAXN 101010
#define ll long long
#define mod 10000
using namespace std;
int n, m;
int f[MAXN][32], lg[MAXN];
int a[MAXN];
void mylog( ){
for( int i = 1; i <= MAXN; i++ )
lg[i] = lg[i / 2] + 1;
return;
}
void ST( ){
for( int j = 1; j <= lg[n]; j++ )
for( int i = 1; i + ( 1 << j ) - 1<= n; i++ )
f[i][j] = min( f[i][j-1], f[i + ( 1 << ( j - 1 ) )][j-1] );
return;
}
int check( int l, int r ){
int k = lg[ r - l + 1 ] - 1;
return min( f[l][k], f[r - ( 1 << k ) + 1][k] );
}
int main( ){
mylog( );
scanf("%d%d",&n,&m);
for( int i = 1; i <= n; i++ )
for( int j = 1; j <= 32; j++ )
f[i][j] = MAXN;
for( int i = 1; i <= n; i++ )
scanf("%d",&a[i]), f[i][0] = a[i];
ST( );
for( int i = 1; i <= n - m + 1; i++ )
printf("%d\n",check( i, i + m - 1 ));
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...