zoukankan      html  css  js  c++  java
  • bzoj 2002: [Hnoi2010]Bounce 弹飞绵羊

     1 #include<cstdio>
     2 #include<cmath>
     3 int a[200006],n,m,b[200006],c[200006],dian[200006],l[200006],r[200006];
     4 int main()
     5 {
     6     scanf("%d",&n);
     7     for(int i=1;i<=n;i++)
     8       scanf("%d",&a[i]);
     9     int len,len1;
    10     len1=floor(sqrt(n));
    11     len=n/len1;
    12     if(len1*len1!=n)
    13       len++;
    14     for(int i=1;i<=len;i++)
    15       {
    16         l[i]=(i-1)*len1+1;
    17         r[i]=i*len1;
    18       }
    19     r[len]=n;
    20     for(int i=1;i<=n;i++)
    21       dian[i]=(i-1)/len1+1;
    22     for(int i=len;i>0;i--)
    23       for(int j=r[i];j>=l[i];j--)
    24         {
    25               if(j+a[j]>r[i])
    26               {
    27                 b[j]=j+a[j];
    28                 c[j]=1;
    29               }
    30               else
    31               {
    32                 b[j]=b[j+a[j]];
    33                 c[j]=c[j+a[j]]+1;
    34               }
    35         }
    36     scanf("%d",&m);
    37     for(int i=0;i<m;i++)
    38       {
    39         int a1,a2,a3;
    40         scanf("%d%d",&a1,&a2);
    41         a2++;
    42         if(a1==1)
    43           {
    44             int sum=0;
    45             for(int j=a2;j<=n;j=b[j])
    46               sum+=c[j];
    47             printf("%d
    ",sum);
    48             }
    49         else
    50           {
    51             scanf("%d",&a3);
    52             a[a2]=a3;
    53             for(int j=a2;j>=l[dian[a2]];j--)
    54             {
    55               if(j+a[j]>r[dian[a2]])
    56               {
    57                 b[j]=j+a[j];
    58                 c[j]=1;
    59               }
    60                   else
    61               {
    62                 b[j]=b[j+a[j]];
    63                 c[j]=c[j+a[j]]+1;
    64               }
    65           }
    66     }
    67       }
    68     return 0;
    69 }

    暴力分块

  • 相关阅读:
    Xcode9学习笔记74
    Xcode9学习笔记73
    Xcode9学习笔记72
    Xcode9学习笔记71
    【Finish】Python Day 8
    【Finish】Python Day 7
    【Finish】Python Day 6
    【Finish】Python Day 5
    【Finish】Python Day 4
    【Finish】Python Day 3
  • 原文地址:https://www.cnblogs.com/xydddd/p/5290644.html
Copyright © 2011-2022 走看看