zoukankan      html  css  js  c++  java
  • 分块

    // 根据下标 得到相应块...我感觉..这个就是核心了= =. 
    // vlen = sqrt(1.0 * n);  
    inline int getid(int index) { return (index - 1) / vlen + 1; }
    
    void add()
    {
        // Todo : 添加一个元素  同时维护块信息 
    } 
    
    void sub(int index) 
    {
        // Todo : 删除一个元素  同时维护块信息 
    }
    
    void chage(int index) 
    {
        // Todo : 改变一个元素  同时维护块信息 
        // 找到块 
        int block_id = getid(index); 
        // 修改块信息  如果对块内元素有影响 也要修改块内元素 
    } 
    
    int query(int l, int r, int dth, int p)
    {
        int res = 0;
        int i, lid, rid;
        lid = getid(l); rid = getid(r);
        if (lid != rid) {  // 分区间讨论   左右端点不在同一区间   左右端点在同一区间 
            for (i=l; i<=getid(l)*vlen; ++i)  // 单个元素 
                ;
            for (i=lid+1; i<=rid-1; ++i)  // 整块维护的信息 
                ;
            for (i=(getid(r)-1)*vlen+1; i<=r; ++i)  // 单个元素 
                ;    
        } else {
            for (i=l; i<=r; ++i)   // 单个元素 
                ;
        }
        return res;
    } 
  • 相关阅读:
    Go语言http之请求接收和处理 代码
    C++之IO流的状态以及使用
    C++之指向函数的指针
    C++之数组类型的形参
    C++之vector类型的形参
    C++之形参
    C++之运算符
    C++之多维数组
    C++之动态数组
    C++之指针
  • 原文地址:https://www.cnblogs.com/cgjh/p/9349287.html
Copyright © 2011-2022 走看看