求助,倍增,0分,只能改过样例

P1198 [JSOI2008] 最大数

后续 ```cpp #include<bits/stdc++.h> using namespace std; long long m,q; long long l; long long a[200005][35]; long long n; long long jg; void add(){ long long s=log2(n); //for(int i=1;(1<<i)<=n;i++){ // a[n][i]=max(a[n][i-1],a[i+1<<(s-1)][s-1]); //} for(long long i=1;i<=s;i++){//退化为1维 long long t1=n-(1<<i)+1; a[t1][i]=max(a[t1][i-1],a[t1+(1<<(i-1))][i-1]);//《关于在我这里s=i这回事》 }//这里有问题 很奇怪,本地都能过WA } long long qu(long long l){ long long j=log2(n-l+1); return max(a[l][j],a[n-(1<<j)+1][j]);//好像也有问题??? } int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>m>>q; char a1; while(m--){ cin>>a1>>l; if(a1=='Q'){ jg=qu(n-l+1); cout<<jg<<endl; }else if(a1=='A'){ a[++n][0]=(l+jg)%q; add(); } } //for(long long i=1;i<=n;i++) for(long long j=0;j<=20;j++) cout<<a[i][j]<<endl; return 0; } ``` AC
by Addicted_Game @ 2023-11-05 15:35:42


|