萌新分块求调(氧中毒?)
查看原帖
萌新分块求调(氧中毒?)
333119
__Seniorious__楼主2022/7/7 09:25

RT,这是码:

#include<bits/stdc++.h>
using namespace std;
int n,a[200010],bel[460],step[200010],to[200010],sz,m,l[460],r[460];
int main(){
	scanf("%d",&n);sz=sqrt(n);
    for(int i=1;i<=n;i++){scanf("%d",&a[i]);bel[i]=(i-1)/sz+1;if(bel[i]!=bel[i-1])r[bel[i-1]]=i-1,l[bel[i]]=i;}r[bel[n]]=n;
    for(int i=n;i;i--){
        if(i+a[i]>r[bel[i]])to[i]=i+a[i],step[i]=1;
        else to[i]=to[i+a[i]],step[i]=step[i+a[i]]+1;
    }  
    scanf("%d",&m);
    int opt,x,y;
    while(m--){
        scanf("%d",&opt);
        if(opt==1){
            scanf("%d",&x);
            int ans=0;
            for(int i=x+1;i<=n;i=to[i])ans+=step[i];
            printf("%d\n",ans);
        }
        else{
            scanf("%d%d",&x,&y);a[++x]=y;
            for(int i=x;i>=l[bel[x]];i--){
                if(i+a[i]>r[bel[x]])to[i]=i+a[i],step[i]=1;
                else to[i]=to[i+a[i]],step[i]=step[i+a[i]]+1;
            }
        }
    }
	return 0;
}

不吸氧T8个点,吸氧全WA

2022/7/7 09:25
加载中...