算法---Hash
pengwill97
C.S Master
展开
-
Codevs1004 四子连棋(BFS+Hash)
题意分析BFS很好想,要考虑白色先手和黑色先手两种情况。 移动棋子可以理解为移动空白部分,搜索时要注意: 1. 空白部分不能出界 2. 空白部分不能重叠 3. 移动的棋子要和当前对应要移动的棋子相同判重的话,直接用hash就可以。 这个题hash冲突概率很低了,随便蛤蛤就可以了。代码总览#include<bits/stdc++.h>using names...原创 2018-04-23 21:03:38 · 233 阅读 · 0 评论 -
【滚动训练】JOYOI 1068 STR (基于Hash+二分的LCP求法)
题意给你两个串A,B,可以得到从A的任意位开始的子串和B匹配的长度。 给定K个询问,对于每个询问给定一个x,求出匹配长度恰为x的位置有多少个。 N,M,K&lt;=200000 题解KMP是正解,这里就用Hash+二分水一下,复杂度nlognnlognnlogn。 具体做法如下: 首先将A、B两个串全部用同一种Hash方法进行Hash,然后需要统计匹配iii个字符有多少种情况。...原创 2018-07-03 21:37:49 · 392 阅读 · 0 评论 -
HDU - 4300 Clairewd’s message (字符串Hash)
题解给定两个字符串,第一个字符串为字符串的转换规则,(如第二个例子,当第二个字符串中出现q字符后,就要把它变为a字符,即q对应a,w对应b)。第二个字符串,前一部分为密文,就是需要你按照转换规则,转换的字符串,后一部分为原文。但是原文的长度不知道,也可能原文给的不全,但是密文是完整的。需要你补全第二个字符串。求出最短的字符串。易知如果存在密文和明文对应,密文长度一定大于等于明文长度,并...原创 2018-07-02 18:41:59 · 239 阅读 · 0 评论 -
HDU - 4821 String (字符串Hash)
题解给出M和L,和一个字符串S。要求找出S的子串中长度为L*M,并且可以分成M段,每段长L,并且M段都不相同的子串个数。 用字符串Hash来做,但是也不能太暴力。 如果我们枚举每个可能的子串,然后检查,这样复杂度近似于|s|2|s|2|s|^2,肯定是会T的。要想办法进行优化。 易知,每个子串的长度一定是L∗ML∗ML*M的,按照朴素的方法,从SSS开始,依次向右移动1个单位,成为新的子...原创 2018-07-02 17:15:02 · 287 阅读 · 0 评论 -
HDU - 1880 魔咒词典 (字符串Hash)
题解对前半部分和后半部分分别Hash,然后查询即可,用map保存hash值及其对应关系。 注意这题直接map &lt; string,string &gt; 会MLE。在尝试过程中,可以用到的Hash值有,unsigned int 自然溢出,或者是 201326611、100663319,1e9+7,1e9+9代码unsigned int 自然溢出#include&lt;...原创 2018-07-02 15:09:03 · 328 阅读 · 0 评论 -
【算法学习】字符串Hash进阶
这回主要看看出题人卡Hash的心机,图片均转载自Hash更进一步(Hash字符串——BDKRHash)。原创 2018-07-03 21:42:27 · 361 阅读 · 0 评论 -
【练习】HDU - 2087 剪花布条(KMP/字符串Hash)
题意一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? 题解KMP如果匹配成功,指针不用回退。Hash分别算出文本串和模式串的hash值,再根据子串进行计算即可。代码KMP#include<bits/stdc++.h>using na...原创 2018-07-10 19:19:26 · 406 阅读 · 0 评论 -
【练习】POJ - 3461 Oulipo(KMP/字符串Hash)
题意PJ的女朋友是一个书法家,喜欢写一些好看的英文书法。有一天PJ拿到了她写的纸条,暗示要送给他生日礼物。PJ想知道自己想要的礼物是不是就是她送的,于是想看看自己想要的在纸条中出现了多少次。 题解KMP注意如果匹配之后K值的选择。由于匹配的串之间是可以有重叠的部分的,所以这里发生匹配之后要当发生适配对K进行回退,这样就能保证在主串指针不回退的情况下完成匹配。不妨以样例为例:...原创 2018-07-10 20:24:02 · 326 阅读 · 0 评论