zoukankan      html  css  js  c++  java
  • [学习笔记]pb_ds库

    前言

    其实我很早开始就用pb_ds库了,用起来确实方便.但最近感觉还是对这个了解颇少,还是来补一下

    话说有人会忘记头文件,其实这有个伎俩,找到电脑上的g++文件夹.Ubuntu应该在etc中,Windows的话各省应该都预装了Dev-CPP吧,右键打开文件位置

    进入Dev-CppMinGW32libgccmingw324.8.1includec++

    然后就发现一大堆头文件还有个叫pb_ds的文件夹,点进去又有大堆头文件,你按照相似方式ext/pb_ds/...加入你的代码就好了

    当然也有个万能的#include<bits/extc++.h>不过有些可能不资瓷

    哈希表

    哈希表再也不用map/unordered_map实现了

    调用

    #include <ext/pb_ds/hash_policy.hpp>
    #include <ext/pb_ds/assoc_container.hpp>
    using namespace __gnu_pbds;
    gp_hash_table <int,int>g;
    cc_hash_table <int,int>c;
    

    支持[]重载运算符,非常方便

    gp_hash_table使用查探法,cc_hash_table使用拉链法

    我一直是用gp_hash_table而且确实一般会稍快一点,然而昨天我做到了一道题毒瘤出题人8e5个数基本上是连续的

    gp_hash_table就真的GG了,10s还没跑出来,cc_hash_table一下就跑完了

    看了这篇文章才知道原因:https://blog.csdn.net/u011080472/article/details/51177412

    所以我个人建议使用cc_hash_table

    优先队列

    这里只讲最常见的配对堆的使用,对其他种类的堆感兴趣的请自行了解

    调用

    #include <ext/pb_ds/priority_queue.hpp>
    using namespace _gnu_pbds;
    typedef pair<int,int> pii
    typedef priority_queue < pii ,std::less<pii> ,pairing_heap_tag> Heap
    

    这样Heap poi就让poi称为一个配对堆了

    非常快

  • 相关阅读:
    分解质因数
    大素数测试和分解质因数
    快速幂
    欧拉函数
    素数
    gcd,lcm,ext_gcd,inv
    凸包问题 poj 2187
    map的 简单用法
    判断线段是否在园内
    2-sat 问题
  • 原文地址:https://www.cnblogs.com/Rye-Catcher/p/9841814.html
Copyright © 2011-2022 走看看