zoukankan      html  css  js  c++  java
  • HYSBZ 2002 Bounce 弹飞绵羊(分块)

    今天原来打算做ZOJ月赛的,等到中午的时候感觉太困了,就睡了一觉,然后就没有然后了。。。

    这题正版写法应该是LCT,但是分块也能过,而且写起来特别简单,LCT写的话应该是一个Cut,Link操作,维护的就是答案的值(没写)。

    下面附上代码:

    #include <iostream>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #define LL long long
    #define FOR(i,x,y)  for(int i = x;i < y;i ++)
    #define IFOR(i,x,y) for(int i = x;i > y;i --)
    #define MAXN 220000
    
    using namespace std;
    
    int n,m,ct[MAXN],nt[MAXN],val[MAXN];
    int blocks;
    
    void Modify(int u,int v){
        nt[u] = v;
        ct[u] = 1;
        if(v >= n)  return;
        if(u/blocks == v/blocks){
            ct[u] += ct[v];
            nt[u] = nt[v];
        }
    }
    
    int Query(int x){
        int ans = 0;
        while(x < n){
            ans += ct[x];
            x = nt[x];
        }
        return ans;
    }
    
    int main()
    {
        //freopen("test.in","r",stdin);
        while(~scanf("%d",&n)){
            FOR(i,0,n)  scanf("%d",&val[i]);
            blocks = (int)sqrt(n+0.5) + 1;
            IFOR(i,n-1,-1){
                Modify(i,i+val[i]);
            }
            scanf("%d",&m);
            FOR(i,0,m){
                int op;
                scanf("%d",&op);
                if(op == 1){
                    int x;
                    scanf("%d",&x);
                    printf("%d
    ",Query(x));
                }
                else{
                    int x,w;
                    scanf("%d%d",&x,&w);
                    val[x] = w;
                    int u = x/blocks*blocks;
                    IFOR(i,x,u-1){
                        Modify(i,i + val[i]);
                    }
                }
            }
        }
        return 0;
    }


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    ssm整合之配置applicationContext-service.xml
    ssm整合之配置applicationContext-dao.xml
    ssm整合之mybatis配置文件SqlMapConfig.xml
    ssm整合之导包
    java BigDecimal工具类
    java中json依赖包
    Servlet+Json代码
    xstream+dom4j比较对象
    分析堆栈跟踪元素
    myeclipse搭建activemq 简单聊天
  • 原文地址:https://www.cnblogs.com/hqwhqwhq/p/4811877.html
Copyright © 2011-2022 走看看