求助

P3865 【模板】ST 表

36行少一个大括号,max()把最后一个参数识别成比较函数了
by CC__DIAMOND @ 2024-03-26 22:30:16


```cpp #include <bits/stdc++.h> #define C cin>> #define CO cout<< int lg2[1000000],st[1000000][22],lg[1000010],a[100010]; using namespace std; inline int read() { int x=0,f=1;char ch=getchar(); while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();} while (ch>='0'&&ch<='9'){x=x=(x<<3)+(x<<1);ch=getchar();} if(f==1) return x; return -x; } int mx(int x,int y) { int p=lg[y-x+1]; return max(st[x][p],st[y-(1<<p)+1][p]); } int main() { int n=read(),m=read(); lg[1]=0; for(int i=1;i<=n;i++) { st[i][0]=a[i]; } for(int i=2;i<=n;i++) { lg2[i]=lg2[i/2]+1; } for(int i=1;i<22;i++) { for(int j=1;j<=n;j++) { if(j+(1<<i)-1>n)break; st[j][i]=max({st[j][i-1],st[j][i-1],st[j+(1<<(i-1))][i-1]}); } } return 0; } ``` 如此修改便能通过编译。
by CC__DIAMOND @ 2024-03-26 22:32:15


|