zoukankan      html  css  js  c++  java
  • C++一些不常见的库及函数

    pbds库 平衡树:one , two

    #include <bits/extc++.h>
    using namespace std;
    using namespace __gnu_pbds;
    typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> set_t;
    struct data{
        int x,r,f;
        data(int _x=0,int _r=0,int _f=0):x(_x),r(_r),f(_f){}
        bool operator<(const data& b)const{
            if(x!=b.x)return x<b.x;
            return f>b.f;
        }
    }a[SIZE];
    set_t s[10021];
    int main(){
        DRII(n,K);
        REP(i,n){
            DRIII(x,r,f);f+=10;
            a[i]=data(x,r,f);
            a[i+n]=data(x+r,x,-f);
        }
        sort(a,a+2*n);
        LL an=0;
        REP(i,2*n){
            if(a[i].f>0){
                REPP(j,a[i].f-K,a[i].f+K+1){
                    an+=SZ(s[j])-s[j].order_of_key(a[i].x-a[i].r);
                }
                s[a[i].f].insert(a[i].x);
            }
            else{
                s[-a[i].f].erase(a[i].r);
            }
        }
        cout<<an<<endl;
        return 0;
    }
    /* 
    int main() {
        set_t s;
        for ( int i=0; i<5; i++ ) s.insert(10*i);
        assert(*s.find_by_order(0) == 0);
        assert(*s.find_by_order(3) == 30);
        assert(s.find_by_order(5) == s.end());
        assert(s.order_of_key(0) == 0);
        assert(s.order_of_key(30) == 3);
        assert(s.order_of_key(35) == 4);
        assert(s.order_of_key(100) == 5);
        return 0;
    }
    */
    
  • 相关阅读:
    andorid jar/库源码解析之Butterknife
    JavaScript DOM 鼠标拖拽
    JavaScript JSON 与 AJAX
    JavaScript DOM 事件模型
    JavaScript DOM 样式操作
    JavaScript DOM 常用尺寸
    JavaScript 日期与计时器
    JavaScript DOM 基础
    JavaScript 数组
    JavaScript 对象拷贝
  • 原文地址:https://www.cnblogs.com/Cwolf9/p/10288740.html
Copyright © 2011-2022 走看看