
Hash
Icefox_zhx
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
bzoj1014 [JSOI2008]火星人prefix(二分答案+哈希+平衡树)
我每次询问,用二分答案+hash去求lcp。 splay维护一下插入和修改。点p的hash值就是 hs[l]∗(sz[r]+1)+hs[p]∗sz[r]+hs[r]hs[l]*(sz[r]+1)+hs[p]*sz[r]+hs[r]原创 2018-01-30 18:19:04 · 436 阅读 · 0 评论 -
loj103 子串查找(kmp/Hash模板题)
KMP模板题#include <cstdio>#include <cstring>#include <algorithm>#include <queue>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 1000010inline int...原创 2018-04-28 13:49:56 · 338 阅读 · 0 评论 -
bzoj4652 [Noi2016]循环之美(Mobius反演+杜教筛+Hash表)
挖了很久的坑qaq 还记得第一次xtx神犇给我们讲这道题,已经过去快整整一年了呢owo首先怎么算是纯循环小数呢? 因为要求数值不同的数对个数,因此我们只考虑gcd(x,y)==1的数对(x,y)。 什么时候会出现循环呢?当出现相同余数时。那纯循环呢?就要求第一次出现的相同余数为x%y。即只需要满足xkl≡xmody,l&amp;gt;0xkl≡xmody,l&amp;gt;0xk^l \equiv x ...原创 2018-05-15 11:32:21 · 265 阅读 · 0 评论 -
bzoj5337 [TJOI2018]str(Hash+dp)
用hash处理字符串匹配,变成若干线段接力覆盖的问题,瞎dp一下就好了qaq 复杂度O(m(len+n))O(m(len+n))O(m(len+n))#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define ll long long#def...原创 2018-05-21 23:22:10 · 456 阅读 · 0 评论 -
bzoj5365 [Lydsy1805月赛]回文树(树上Hash+暴力)
因为字符随机,所以同样的字符很少,我们对于同样的字符内部暴力两两枚举,看x-&gt;y是不是一个回文串。 怎么看呢?蒟蒻我不会… 比赛时胡乱写了一个假的lct维护树上hash值。 一开始没维护sz,它过了…过了… 发现后改过,它RE了…缘来是我写挂了qaq 改对过了美滋滋,然而elijahqi巨佬告诉我你太naive了…你这样rev之后hash值根本不对…囧 然而过了,可能因为数据随机...原创 2018-05-27 22:29:56 · 560 阅读 · 0 评论 -
ural1519 Formula 1(插头dp)
一个n*m的棋盘,有些格子是障碍,问存在多少条哈密顿回路。(n,m<=12) 基于连通性的状态压缩动态规划。cdq论文。 这题逐格递推,括号表示法,滚动数组+Hash表优化空间。 复杂度O(S∗n)O(S∗n)O(S*n) 2017.5.21第一次写这道题。 2018.6.13把这题整理到blog上。 这一年来,水平究竟有没有长进呢… 当时就能写出Hash表+括号表示法的插头d...原创 2018-06-13 15:22:37 · 369 阅读 · 0 评论 -
bzoj1187 [HNOI2007]神奇游乐园(插头dp)
在一个n*m的棋盘上,每个格子有权值,让你找一条简单回路使得经过的格子权值和最大。n<=100,m<=6 插头dp经典题目。复杂度O(nm3mm)O(nm3mm)O(nm3^mm)#include <bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3f#define ll long long#defi...原创 2018-06-13 16:27:09 · 409 阅读 · 0 评论 -
bzoj2310 ParkII(插头dp)
类似bzoj1187 这回要求一条简单路的最大权值和。 简单路与简单回路的区别就在于,我们可以有独立插头。 于是多一维状态表示独立插头即可。 转移时多讨论一些情况就好了qaq 此时p=1,q=2的插头不管其实也是可以的,因为一条简单回路一定也能视作一条简单路,在其他情况被讨论到。 注意到我们这样无法考虑到只有一个点的简单路,于是乎单独处理掉。 复杂度O(nm4mm)O(nm4mm)O...原创 2018-06-13 18:51:36 · 365 阅读 · 0 评论 -
bzoj5285 [Hnoi2018]寻宝游戏(思路题+Hash)
这题真是神orz 我们每一位单独考虑,注意到|0和&1对最终的结果是没有影响的。因此最终的结果只在于最后一个是|1,&0的哪一个。 对于第i位,我们搞出一个b[i],如果第j个数第i位为1,那么b[i]+=bin[j]。 这样我们就得到了一个左边为低位的二进制数。 我们考虑把操作序列也变成一个二进制数,如果第i个数前面的操作为|,那么第i位就是0,否则就是1,记这个二进制数...原创 2018-06-07 17:17:38 · 478 阅读 · 0 评论 -
bzoj2124 等差子序列(Hash+树状数组)
给定一个排列,问是否存在长度>=3的等差子序列。如果存在长度>=3的等差子序列,那么一定存在长度为3的等差子序列。我们只需要判断是否存在长度为3的等差子序列即可。我们从前往后做,对于aiaia_i,如果ai−kai−ka_i-k与ai+kai+ka_i+k都已经出现过或者都没出现过那没事,否则只出现了一个的话,另一个一定在后面,就一定会构成一个等差子序列。每个数如果出现...原创 2018-06-23 12:33:11 · 487 阅读 · 0 评论 -
bzoj3679 数字之积(数位dp+Hash表)
其实有效状态并不多,于是我们拿一个hash表记一下,直接数位dp即可。#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 10003inline char gc(){ static char buf[1<<16],...原创 2018-06-16 20:51:55 · 420 阅读 · 0 评论 -
bzoj4195 [Noi2015]程序自动分析(并查集+Hash表)
并查集小水题~ 需要Hash表/map/离散化一下 一开始没排序…sb了。。。#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 200011inline char gc(){ static char buf[1<&...原创 2018-06-25 13:18:53 · 267 阅读 · 0 评论 -
【LGR-048 五周年庆贺】洛谷6月月赛
我居然忘了…忘了…20多分钟后才开qaq 然后就写不完啦!ggA水题直接算#include &amp;amp;lt;bits/stdc++.h&amp;amp;gt;using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 200010double v,a;double const g=10;int main...原创 2018-06-18 23:20:58 · 658 阅读 · 0 评论 -
bzoj4943 [Noi2017]蚯蚓(Hash+复杂度分析卡常)
做法较为明显,直接模拟即可。Hash比较字符串。 复杂度分析一波,如果没有2操作的话,复杂度显然是O(nk)O(nk)O(nk)的,考虑有2操作的话,分裂两个蚯蚓的复杂度是O(k2)O(k2)O(k^2),因此而带来的合并复杂度也是O(ck2)O(ck2)O(ck^2)的,因此总的复杂度就是O(nk+ck2+|s|)O(nk+ck2+|s|)O(nk+ck^2+|s|) 然后就是卡常啦! 首...原创 2018-06-28 15:27:52 · 352 阅读 · 0 评论 -
bzoj4558 [JLoi2016]方(容斥原理,计数,Hash)
这容斥真是写的我心态爆炸… 考虑用至少0个坏点的-至少1个坏点的+至少两个坏点的-至少三个坏点的+至少四个坏点的。 我们发现对于斜着的正方形,可以直接在框住它的大正方形处计数,边长为i的大正方形内就有i个正方形。 且我们发现每个点出现且仅出现在一个正方形上。因此对于至少一个坏点的正方形,我们只需要统计过一个坏点的正方形框架个数即可。然后就是毒瘤的分类讨论!至少两个三个四个的可以通过枚举两...原创 2018-07-13 23:27:23 · 430 阅读 · 0 评论 -
bzoj3122 [Sdoi2013]随机数生成器(BSGS+Hash表)
首先把特殊情况特判掉。然后对于递推式xi+1=axi+bx_{i+1}=ax_i+b 我们可以搞一下通项:xi+1+ba−1=ai(x1+ba−1)x_{i+1}+\frac{b}{a-1}=a^i(x_1+\frac{b}{a-1})。 可以看做ak≡bmodpa^k\equiv b\mod p 其中b=t+ba−1x1+ba−1%pb=\frac{t+\frac{b}{a-1}}{x_1+原创 2018-04-03 20:12:10 · 229 阅读 · 0 评论 -
bzoj3239/poj2417 Discrete Logging(BSGS+Hash表)
BSGS模板题。 BSGS算法,原名Baby Steps Giant Steps,又名大小步算法,数论基本算法之一。用来求离散对数。即给定a,b,p,求最小的正整数x使得ax≡bmodpa^x\equiv b \mod p,p为质数。我们考虑暴力怎么做,根据费马小定理,如果(a,p)=1,p为质数,那么我们有ap−1≡1modpa^{p-1}\equiv1\mod p,因此我们有ak≡ak%(p−原创 2018-04-03 15:25:41 · 264 阅读 · 0 评论 -
bzoj1056 [HAOI2008]排名系统(splay+Hash)
题目就是个裸的平衡树。 但是读入很鬼畜,需要好好写个hash。 数据还有锅,第七个点得分超过了八位正整数!需要ll。原创 2018-04-10 14:14:17 · 360 阅读 · 0 评论 -
bzoj1414 [ZJOI2009]对称的正方形(二分答案+二维哈希)
首先我们考虑偶数个点和奇数个点的方阵枚举中心方式不太相同,我们用类似manacher的处理方法,填上一堆0,把他们全都变成奇数的情况。然后我们枚举每一个点作为中心,二分答案找到以这个点为中心最大的合法方阵。就可以直接统计这个点对答案的贡献了。这样已经是O(n2logn)O(n^2logn)的了,我们需要O(1)判断一个方阵是否上下左右均对称。类似不用manacher求最长回文子串的方法,把这个子串镜原创 2018-01-16 17:16:56 · 609 阅读 · 0 评论 -
bzoj3097 Hash Killer I(卡hash,构造,数学)
好神呀,题解见vfk神犇:portal#include <bits/stdc++.h>using namespace std;#define N 100010int n,l;char s[N];int main(){// freopen("a.in","w",stdout); n=1;s[n]='a'; for(int i=1;i<=12;++i...原创 2018-03-19 15:46:58 · 1407 阅读 · 0 评论 -
bzoj3207 花神的嘲讽计划Ⅰ(hash+主席树)
因为K是固定的,我们把原串的所有长度为K的子串都hash了。 每次查询就相当于在区间内询问一个数是否存在。可以主席树来搞一搞,也可以离线莫队什么的。。。原创 2018-03-19 21:31:02 · 295 阅读 · 0 评论 -
bzoj3555 [Ctsc2014]企鹅QQ(hash+枚举)
直接枚举哪一位不同,删去这一位,排序算一下贡献即可。原创 2018-03-19 22:08:46 · 254 阅读 · 0 评论 -
CF869E The Untended Antiquity(二维数状数组+差分+hash)
考虑什么情况会不可达,当覆盖两点的最小矩形不同时,一定不可达。因此我们需要快速的知道覆盖一个点的最小矩形是哪个。我们考虑每次把一个矩形染色,那么复杂度是不可接受的。联想到我们一维做区间加法,单点查询时,可以使用差分+前缀和的方法解决。我们此时同样可以使用差分+前缀和的思想。只不过是二维的。给(x1,y1,x2,y2)的矩阵加x,我们可以这样做:(x1,y1)+x,(x1,y2+1)-x,(x2+1,原创 2017-10-18 17:32:24 · 532 阅读 · 0 评论 -
NOIP2002提高组
2002提高 A.均分纸牌(贪心) B.字串变换(字符串哈希+bfs+剪枝)原创 2017-11-10 17:13:13 · 431 阅读 · 0 评论 -
bzoj1567 [JSOI2008]Blue Mary的战役地图(二维hash+二分答案)
二维hash,然后二分最长公共正方形的边长,把a的都扔到map里,然后用b的去查询有没有。复杂度O(n2log2n)O(n^2log^2n)原创 2018-03-20 09:39:25 · 303 阅读 · 0 评论 -
bzoj2351 [BeiJing2011]Matrix(二维哈希)
挺裸的,,,搞出hash表,直接查询即可。原创 2018-03-20 10:27:00 · 517 阅读 · 0 评论 -
bzoj1170 [Balkan2007]Cipher(二维hash)
恩,垃圾读入。 就是个二维hash,然后排序找众数。原创 2018-03-20 14:48:54 · 324 阅读 · 0 评论 -
bzoj2790 [Poi2012]A Horrible Poem(hash+枚举)
多次询问子串最小循环节。 子串x…y循环节为l的充要条件是x…y-l与x+l…y相同。这个可以由hash来O(1)判断。 循环节长度肯定是y-x+1的因数,很好理解。于是我们可以枚举长度来求最小循环节。 然而这样会T。我们知道循环次数还一定是每个字母出现次数的因数,因此我们对这些取个gcd,枚举gcd的因数即可。原创 2018-03-20 16:26:17 · 322 阅读 · 0 评论 -
bzoj2258 pku2758 Checking the Text 文本校对(Hash+二分+splay)
带插入,求lcp。和bzoj1014一样。 我的splay常数是真的大【捂脸】原创 2018-03-20 20:01:51 · 337 阅读 · 0 评论 -
bzoj1090 [SCOI2003]字符串折叠(区间dp+Hash)
f[i][j]表示把i…j压缩的最小长度,我们有转移 f[i][j]=min{f[i][k]+f[k+1][j] |i<=k<j}f[i][j]=min\{f[i][k]+f[k+1][j]\ |i<=k<j\} 如果i…j有循环节k的话,还有转移 f[i][j]=min{f[i][i+k−1]+dig[j−i+1/k]+2}f[i][j]=min\{f[i][i+k-1]+dig[j-i+1原创 2018-03-20 20:24:06 · 318 阅读 · 0 评论 -
bzoj3162 独钓寒江雪(树形dp+Hash)
就是求无根树的本质不同的独立集个数。如果不考虑本质不同,则有树形dp。 考虑本质不同,就要考虑无根树的同构,可以用hash来搞。具体题解见:portal我的hash真是冲突到死【再见】,hash值最好从大往小排。。。原创 2018-03-21 17:15:02 · 328 阅读 · 0 评论 -
bzoj5248 [2018多省省队联测]一双木棋(状压dp+hash表)
不难发现一个合法的状态可以用每一列有多少个棋子来表示。 状压一下就是11^10,可以用Hash表来存。可以注意到其实合法状态没有多少,可以先都搞出来存在队列里再倒着做。f[S]表示S状态的局面先手可以再得多少分,考虑转移,先手取最大,后手取最小。原创 2018-04-08 20:10:21 · 252 阅读 · 0 评论 -
bzoj4892 [Tjoi2017]dna(SAM/SA/二分答案+Hash)
在后缀自动机上跑一跑就好啦。O(n)O(n)O(n) SA题解:portalO(nlogn)O(nlogn)O(nlogn) upd:还可以二分答案+Hash来求lcp哟。O(nlogn)O(nlogn)O(nlogn)SAM#include <cstdio>#include <cstring>#include <algorithm>#incl...原创 2018-03-26 15:57:50 · 502 阅读 · 0 评论 -
uoj207 共价大爷游长沙(lct+Hash)
考虑我们给S中的每条路径一个权值,然后对这段路径异或上这个值。 那么最后询问的那条边如果权值等于S集合的异或和那么就说它被所有路径经过了。这样的正确性是很高的。 然后考虑新加入一条边,就会出现一个环,然后肯定是在这个环上删去一条边,假设是x,y那么在新的树上x->y的路径上异或上x,y这条边的异或值就可以得到新树的正确异或了。(画画图理解一下就是对存在性取反了) 因此维护一棵边权lct...原创 2018-07-15 20:02:35 · 518 阅读 · 0 评论