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

UVa 188 Perfect Hash

题目分析本题要求为给定的单词列表构造一个完美哈希函数函数形式为⌊Cw⌋ mod n \left\lfloor \frac{C}{w} \right\rfloor \bmod n⌊wC​⌋modn其中www是单词转换后的整数值转换规则每个字母用555位表示即乘以323232a111bz2×3226902 \times 32 26 902×322690nnn是单词列表的长度CCC是一个待寻找的正整数需要尽可能小哈希值必须两两不同即构成完美哈希题目还给出一个重要约束CCC必须是至少一个wiw_iwi​的倍数。解题思路单词转换将每个单词转换为整数从左到右处理字母每次将当前值乘以323232再加上字母对应的数值a111b222…z262626。寻找最小CCC采用逐步迭代的方法从C1C 1C1开始检查当前CCC是否使所有哈希值互异若存在冲突即⌊C/wi⌋ mod n⌊C/wj⌋ mod n\lfloor C / w_i \rfloor \bmod n \lfloor C / w_j \rfloor \bmod n⌊C/wi​⌋modn⌊C/wj​⌋modn则需要增大CCC冲突时的最小可尝试CCC为min⁡((⌊Cwi⌋1)⋅wi,(⌊Cwj⌋1)⋅wj) \min\left( \left( \left\lfloor \frac{C}{w_i} \right\rfloor 1 \right) \cdot w_i, \left( \left\lfloor \frac{C}{w_j} \right\rfloor 1 \right) \cdot w_j \right)min((⌊wi​C​⌋1)⋅wi​,(⌊wj​C​⌋1)⋅wj​)取所有冲突中计算值的最大值作为下一个CCC因为必须同时解决所有冲突重复直到找到可行的CCC关键优化由于CCC必须至少是某个wiw_iwi​的倍数上述更新方法保证新CCC满足该约束。验证函数test\texttt{test}test对候选CCC计算每个单词的哈希值C / w % n用布尔数组标记是否出现过若重复则返回false\texttt{false}false否则true\texttt{true}true。代码实现// Perfect Hash// UVa ID: 188// Verdict: Accepted// Submission Date: 2016-03-14// UVa Run Time: 0.000s//// 版权所有C2016邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;vectorintwords;// 存储单词转换后的整数值// 验证函数检查 C 是否能产生完美的哈希函数// 返回 true 表示所有哈希值互异false 表示存在冲突booltest(longlongC){vectorintused;// 标记哈希值是否已被使用for(inti0;iwords.size();i)used.push_back(false);for(inti0;iwords.size();i){intremainderC/words[i]%words.size();// 计算哈希值if(used[remainder]true)// 冲突发生returnfalse;elseused[remainder]true;}returntrue;}// 寻找最小可行 Clonglongfind(){longlongC1;// 从 1 开始尝试intnwords.size();do{longlongoldCC;// 记录本轮初始值// 遍历所有单词对 (i, j)for(inti0;iwords.size()-1;i)for(intji1;jwords.size();j){// 如果存在冲突则更新 C 为当前冲突中计算的最大值if((oldC/words[i]%n)(oldC/words[j]%n))Cmax(C,min((oldC/words[i]1)*words[i],(oldC/words[j]1)*words[j]));}}while(test(C)false);// 重复直到 C 可行returnC;}intmain(){string line,block;while(getline(cin,line)){istringstreamiss(line);while(issblock){intnumber0;// 将单词转换为整数每个字母用 5 位表示for(inti0;iblock.length();i)numbernumber*32block[i]-a1;words.push_back(number);}sort(words.begin(),words.end());// 按升序排序coutline\n;// 输出原始输入行coutfind()\n\n;// 输出 C 并跟一个空行words.clear();// 清空准备处理下一行}return0;}复杂度分析设单词数量为nnn2≤n≤132 \le n \le 132≤n≤13则每次验证test\texttt{test}test的复杂度为O(n)O(n)O(n)每次迭代更新冲突的复杂度为O(n2)O(n^2)O(n2)由于nnn很小且CCC增长较快迭代次数有限算法在实际测试中非常高效总结本题的核心在于理解了冲突处理时的CCC更新策略当⌊C/wi⌋ mod n⌊C/wj⌋ mod n\lfloor C/w_i \rfloor \bmod n \lfloor C/w_j \rfloor \bmod n⌊C/wi​⌋modn⌊C/wj​⌋modn时两个哈希值相等要使它们不同必须增大CCC使得其中一个的商至少增加111因此下一个候选CCC为min⁡((⌊C/wi⌋1)⋅wi,(⌊C/wj⌋1)⋅wj)\min((\lfloor C/w_i \rfloor 1) \cdot w_i, (\lfloor C/w_j \rfloor 1) \cdot w_j)min((⌊C/wi​⌋1)⋅wi​,(⌊C/wj​⌋1)⋅wj​)。取所有冲突中的最大值即可保证同时解决所有冲突。这种方法避免了盲目递增大大提高了搜索效率。

相关文章:

UVa 188 Perfect Hash

题目分析 本题要求为给定的单词列表构造一个完美哈希函数,函数形式为: ⌊Cw⌋ mod n \left\lfloor \frac{C}{w} \right\rfloor \bmod n ⌊wC​⌋modn 其中: www 是单词转换后的整数值(转换规则:每个字母用 555 位表示…...

长期使用中观察到的Taotoken账单明细与成本分析价值

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期使用中观察到的Taotoken账单明细与成本分析价值 在将大模型能力集成到产品或研发流程的长期实践中,一个清晰、可追…...

联邦学习与Transformer在CV与安全领域的融合应用与实战解析

1. 项目概述:当联邦学习遇上Transformer,CV与安全的新范式最近几年,我身边不少做计算机视觉(CV)和网络安全的朋友,都在不约而同地讨论两个词:联邦学习(Federated Learning&#xff0…...

信贷风控中可解释AutoML实践:用SHAP与H2O实现透明AI决策

1. 项目概述:当信贷决策遇上“透明”的AI在金融科技圈子里干了十几年,我亲眼见证了机器学习从实验室里的新奇玩具,变成信贷风控部门里不可或缺的“主力队员”。无论是银行、消费金融公司还是新兴的金融科技平台,都在用算法模型来评…...

基于SVR与特征选择的系外行星半径预测:数据清洗、模型构建与天文解读

1. 项目概述:从数据到洞察,预测遥远世界的尺寸在系外行星研究的浩瀚星海中,我们获取的数据往往是间接且充满噪声的。当一颗行星从它的母恒星前方经过,我们称之为“凌星”,望远镜会记录下恒星亮度的微小下降。从这些“光…...

不同价位的燕窝品质差异大吗?行业标准解读与选购建议

不同价位的燕窝品质差异大吗?答案是确实存在较为明显的客观差异,价格落差主要对应原料等级、加工工艺、安全溯源三个核心维度的区别,合理的价格差对应品质差,但也存在部分营销溢价,消费者需要学会区分核心指标。不同价…...

第五篇:锻造大脑——为什么算法公开,你却造不出 GPT?

书接上文。同学问:“既然 CNN、Transformer 的论文和代码都是开源的,我能不能在寝室里手搓一个 DeepSeek 或者 GPT-4?” 这就像虽然米其林餐厅的菜谱(算法)是公开的,但要把菜做成艺术品,你还需要…...

非洲AI本土化实践:医疗、农业、金融、教育四大领域创新与挑战

1. 非洲AI发展的现实图景:机遇与挑战并存 谈论人工智能,我们常常将目光聚焦在硅谷、北京或伦敦。但如果你把视线转向非洲大陆,会发现一片截然不同却又充满生机的AI创新土壤。这里没有OpenAI或DeepMind那样的科技巨头,却有着一群直…...

基于主动学习的广义Benders分解算法初始化优化研究

1. 项目概述:当优化算法遇上“主动学习”在运筹优化和工业工程领域,我们常常需要面对一类“硬骨头”问题:大规模、混合整数、带有复杂约束的优化模型。这类问题大到供应链网络设计,小到芯片布局布线,其核心挑战在于&am…...

CANN/tensorflow NPURunConfig精度调优配置

精度调优 【免费下载链接】tensorflow Ascend TensorFlow Adapter 项目地址: https://gitcode.com/cann/tensorflow precision_mode_v2 算子精度模式,配置要求为string类型。 fp16:表示原图中算子精度为float16、bfloat16或float32时&#xff0c…...

CANN/cann-recipes-infer:NPU DeepSeek-V4 TileLang算子开发实践

NPU DeepSeek-V4 TileLang算子开发实践 【免费下载链接】cann-recipes-infer 本项目针对LLM与多模态模型推理业务中的典型模型、加速算法,提供基于CANN平台的优化样例 项目地址: https://gitcode.com/cann/cann-recipes-infer 简介 在大模型异构计算发展背景…...

CANN/pyasc ib_wait函数文档

asc.language.basic.ib_wait 【免费下载链接】pyasc 本项目为Python用户提供算子编程接口,支持在昇腾AI处理器上加速计算,接口与Ascend C一一对应并遵守Python原生语法。 项目地址: https://gitcode.com/cann/pyasc asc.language.basic.ib_wait(g…...

昇腾SiP CgemvOperation C++示例

信号处理加速库CgemvOperation C Demo 【免费下载链接】sip 本项目是CANN提供的一款高效、可靠的高性能信号处理算子加速库,基于华为Ascend AI处理器,专门为信号处理领域而设计。 项目地址: https://gitcode.com/cann/sip 介绍 该目录下为信号处…...

智能电网安全:基于可信AI的攻击检测与风险解释框架

1. 项目概述在智能电网这个庞大的能源神经系统中,分布式能源资源(DERs)——比如你家屋顶的光伏板、街角的电动汽车充电桩、甚至是一个社区的储能电站——正以前所未有的速度和规模接入。它们通过源源不断的控制与状态消息,与电网控…...

CANN Runtime异常处理指南

异常处理 【免费下载链接】runtime 本项目提供CANN运行时组件和维测功能组件。 项目地址: https://gitcode.com/cann/runtime 获取Runtime错误码 所有Runtime接口都会返回一个错误码。然而,对于异步接口(参见异步任务执行)&#xff0…...

KrkrzExtract终极指南:新一代krkrz引擎资源解包工具完全解析

KrkrzExtract终极指南:新一代krkrz引擎资源解包工具完全解析 【免费下载链接】KrkrzExtract The next generation of KrkrExtract 项目地址: https://gitcode.com/gh_mirrors/kr/KrkrzExtract KrkrzExtract是专门为krkrz引擎设计的下一代资源处理工具&#x…...

别再死记硬背TP/FP了!用Python手把手带你画混淆矩阵,5分钟搞懂准确率、召回率

用Python实战拆解分类模型评估:从混淆矩阵到指标可视化 刚接触机器学习的开发者常会遇到这样的困惑:为什么模型预测的"准确率"很高,但实际业务中却表现糟糕?上周我帮一个电商团队分析用户流失预测模型时就遇到这种情况—…...

多模态大模型如何重塑科学教育:从理论框架到课堂实践

1. 项目概述:当科学教育遇见“多模态”大脑最近几年,我身边不少从事科学教育(从K12到大学)的朋友和同事,都在不约而同地讨论一个词:多模态大语言模型。起初,大家只是把它当作一个更聪明的聊天机…...

视频动作识别可解释性:REVEX框架与六种移除式解释方法评测

1. 项目概述:当AI“看”视频时,我们如何理解它的“思考”?在动作识别领域,AI模型已经能够以惊人的准确率识别视频中的人类行为,从简单的“走路”、“跑步”到复杂的“打篮球”、“弹钢琴”。然而,一个长期困…...

2026年,如何挑选靠谱的冷镦油过滤机生产商?这几点是关键

在紧固件、轴承等金属零部件制造领域,冷镦工艺是核心环节,而冷镦油的清洁度直接关系到模具寿命、产品精度与生产成本。随着2026年工业制造向智能化、绿色化深度转型,选择一台高效、可靠的冷镦油过滤机,已成为企业降本增效与合规运…...

CANN/hcomm AIV算子任务编排

任务编排 【免费下载链接】hcomm HCOMM(Huawei Communication)是HCCL的通信基础库,提供通信域以及通信资源的管理能力。 项目地址: https://gitcode.com/cann/hcomm 编排步骤 参与集合通信的各个rank协调有序地进行同步与数据搬运&am…...

别再手动改NetCDF了!用CDO批量插值气象数据的保姆级Shell脚本(附双线性/最近邻/样条等7种方法对比)

别再手动改NetCDF了!用CDO批量插值气象数据的保姆级Shell脚本(附双线性/最近邻/样条等7种方法对比) 气象数据处理中,最让人头疼的莫过于面对不同来源、不同分辨率的NetCDF文件。想象一下,你手头有几百个温度、降水或风…...

深度解析KrkrzExtract:下一代krkrz引擎资源处理工具实战指南

深度解析KrkrzExtract:下一代krkrz引擎资源处理工具实战指南 【免费下载链接】KrkrzExtract The next generation of KrkrExtract 项目地址: https://gitcode.com/gh_mirrors/kr/KrkrzExtract KrkrzExtract作为新一代krkrz引擎资源处理工具,专为游…...

CANN/ops-nn GeluMul算子

GeluMul 【免费下载链接】ops-nn 本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-nn 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√At…...

APA 7th Edition终极指南:三分钟解决Word参考文献格式混乱问题

APA 7th Edition终极指南:三分钟解决Word参考文献格式混乱问题 【免费下载链接】APA-7th-Edition Microsoft Word XSD for generating APA 7th edition references 项目地址: https://gitcode.com/gh_mirrors/ap/APA-7th-Edition 还在为学术论文的参考文献格…...

中国企业全球化人才战略白皮书

导读:当前中国企业全球化已进入深水区,告别 “拼速度、抢扩张” 的粗放阶段,转向以长期价值、组织韧性、全球共生为核心的新征程。效率、成本与技术速度不再是决胜关键,信任力成为企业立足全球、穿越周期的核心 “软货币”&#x…...

CANN/HCOMM对称内存注册接口

HcclCommSymWinRegister 【免费下载链接】hcomm HCOMM(Huawei Communication)是HCCL的通信基础库,提供通信域以及通信资源的管理能力。 项目地址: https://gitcode.com/cann/hcomm 产品支持情况 Ascend 950PR/Ascend 950DT&#xff1…...

百度网盘提取码智能解析:3分钟告别手动搜索的终极指南

百度网盘提取码智能解析:3分钟告别手动搜索的终极指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 还在为百度网盘提取码而烦恼吗?每次遇到加密分享链接,都要像侦探一样在网页间来回搜索…...

Docker Registry Push 超时排查全记录:从网络栈到残留 veth 的真相

摘要: 在私有化部署 Docker Registry 时,遇到宿主机 curl 容器映射端口超时的诡异问题。经历 iptables、rp_filter、bindv6only、抓包等深入排查后,最终发现是 Docker 卸载残留的 veth 接口扰乱了内核包转发路径。本文完整记录排错过程与根因…...

从停机问题到AI责任:技术不可判定性与法律归责的跨界思考

1. 项目概述:一个横跨技术与法律的硬核议题最近和几位做算法开发的朋友聊天,大家不约而同地提到了一个共同的困惑:我们写的代码、训练的模型,一旦“闯了祸”,责任到底算谁的?是写代码的工程师,是…...