当前位置: 首页 > news >正文

哈希表

哈希函数

有两个广受好评的 ull 哈希函数。

  • 一种是 __builtin_bswap64

    struct hh{il size_t operator()(ull x)const{constexpr static ull C=ull(4e18*acos(0))|71;return __builtin_bswap64(x*C);}
    };
    
  • 一种是 splitmix64

    struct hh{il unsigned operator()(ull x)const{x+=0x9e3779b97f4a7c15;x=(x^(x>>30))*0xbf58476d1ce4e5b9;x=(x^(x>>27))*0x04d049bb133111eb;return x^(x>>31);}
    };
    

根据喜好使用即可。

STL 哈希表

首先,unordered_mapcc_hash_tablegp_hash_table 的效率完全基于题目随机

一般情况下gp_hash_table 的效率是最快的,但代价是其空间消耗翻倍。若要向哈希表中存储 \(10^7\) 级别的数据,需要格外注意这一点。

手写哈希表

主要由哈希函数和模数两部分构成。哈希函数从上面的两个里面任选一个就行。模数决定了哈希表的空间复杂度,一般和数据范围差不多就行,且一般是质数

一些常用的模数:\(10^4+7\)\(10^5+3\)\(10^5+19\)\(10^6+3\)\(10^7+19\)\(10^8+7\)

一个简化的只需实现 [] 运算符的哈希表模板,实现了从 ull 到 ull 的映射:

struct H{static constexpr int M=1e7+19;int head[M],tot;struct{ull key,val;int to;}e[M];il unsigned hh(ull x){static constexpr ull C=ull(4e18*acos(0))|71;return __builtin_bswap64(x*C);}il int fnd(ull v){int u=hh(v)%M;for(int i=head[u];i;i=e[i].to) if(e[i].key==v) return i;e[++tot]={v,0,head[u]},head[u]=tot;return tot;}il ull& operator[](ull x){return e[fnd(x)].val;}
}mp;

更全的模板:

struct H{static constexpr int M=1e7+19;int head[M],tot;struct Data{ull key,val;int to;}e[M];il unsigned hh(ull x){static constexpr ull C=ull(4e18*acos(0))|71;return __builtin_bswap64(x*C);}il int fnd(ull v,bool typ=0){int u=hh(v)%M;for(int i=head[u];i;i=e[i].to) if(e[i].key==v) return i;if(typ) e[++tot]={v,0,head[u]},head[u]=tot;return tot;}il ull& operator[](ull x){return e[fnd(x,1)].val;}il bool count(ull x){return fnd(x);}il int size(){return tot;}Data* begin(){return e+1;}Data* end(){return e+tot+1;}
}mp;
http://www.jsqmd.com/news/345807/

相关文章:

  • 国产化突围,赋能流程工业高质量发展——中维ZWPD三维设计软件替代实践之路
  • MyEMS开源能源管理系统——实操导向,生态共建,解锁工业节能减碳新价值
  • 2026年度权威发布:最新化工原料公司实力与产业赋能深度解析 - 十大品牌推荐
  • 2026年中国化工原料公司发布:以四川浙宇科技为代表的标杆企业深度解析。 - 十大品牌推荐
  • 企业选对 AI 人力资源管理系统的秘诀:认准 “真智能” 核心特质
  • 【Fine-tuning】 详解:Feature Extraction、Linear Probing 与 End-to-End 的区别
  • 聊聊希腊购房移民公司排名,杰圣移民口碑怎么样 - mypinpai
  • 美国静态住宅IP购买选择哪家好?
  • 2026哈尔滨汽车音响升级靠谱推荐,九号音乐汽车音响费用合理 - 工业设备
  • 2026年化工原料公司推荐:基于技术创新与产业适配维度的深度评价榜单 - 十大品牌推荐
  • AI 能不能真的把 APP 自动化测试跑起来?我们用「墨迹天气」做了一次完整验证
  • P6KE16CA双向 TVS瞬态抑制二极管:600W功率16V电压中压浪涌防护
  • 2026年江苏铁路安全区防护公司排名,选购时该怎么选 - 工业品牌热点
  • 解密井下电源的耐久性:LMPW16系列高温DC-DC模块的设计解析
  • 2026最新术后专用鼻腔洗鼻器盐粉推荐!国内优质术后鼻腔护理产品权威榜单发布,专业合规助力术后鼻腔康复 - 品牌推荐2026
  • 2026年汽车音响改装店性价比排行,哈尔滨九号音乐汽车音响上榜 - 工业品牌热点
  • 2026年热门的酒店快装墙板推荐制造商排名,靠谱的有哪些? - 工业设备
  • 接口测试不用再“拼接口顺序”了,爱测平台接口自动化智能体实战演示
  • 2026年杭州公司律师推荐:离婚律师/ 刑事律师/遗产继承纠纷律师精选 - 品牌推荐官
  • 【四个场景测试】源文件编码GBK
  • 2026年音乐汽车音响九号详细内容解读,助你挑选心仪的品牌 - 工业品网
  • 四象限法则:从理论到落地的高效时间管理指南
  • 2026最新防呛洗鼻器/清洗壶/洗鼻剂推荐!国内优质鼻腔护理器械权威榜单发布,资质服务双优助力鼻腔健康 - 品牌推荐2026
  • 【四个场景测试】源文件编码UTF-8 BOM
  • Toptal被《新闻周刊》评为美国最可靠专业服务公司第一名
  • Java面向对象——Super类详解
  • 白山市英语雅思培训辅导机构推荐、2026权威出国雅思课程中心学校口碑排行榜 - 苏木2025
  • 2026最新花粉尘螨过敏原洗鼻装置推荐!国内优质鼻腔护理器械权威榜单发布,专业合规助力鼻腔健康 - 品牌推荐2026
  • NGO-LSTM:时间序列预测的新宠儿
  • Java 21虚拟线程 vs Kotlin协程:高并发编程模型的终极对决与选型思考