关闭

[分块 随机Hash] Romanian IOI 2017 Selection #6 Jolteon

传送门问有多少个区间,出现过的数出现次数都是奇数 给每个数随机一个hash值 然后区间中所有数的xor和 和 所有pre<l≤i≤rpre< l \le i \le r的数的异或和 相同 那么就合法 枚举右端点,新增一个数会对一段造成影响 变成区间异或,区间是否存在一个数,分块维护#include #include #include...
阅读(206) 评论(0)

[Hash] BZOJ 4076 [Wf2014]Maze Reduction

第一眼觉得和一道题莫名相似,实际上并没有什么关系ft,i,jf_{t,i,j}表示从第 ii 个点,第 jj 扇门出发,走 tt 步所有情况的Hash值,那么很好转移一开始假设掉在房间中间,那我们按照顺序把所有点走过去一遍,取个最小表示,Hash在一起最后Hash值相同的就是等价了#include #include #include #include...
阅读(111) 评论(0)

[主席树 Hash] Codechef JUNE17 #CLONEME Cloning

对权值建主席树 然后对于区间[a,b],[c,d] 在主席树上二分排完序后从左第一个不一样的地方 以及从右第一个不一样的地方 这个可以Hash下权值的出现次数,也是可以相减的#include #include #include using namespace std; typedef unsigned long long ull;inlin...
阅读(161) 评论(0)

[Hash] 2017 计蒜之道 初赛 第五场 UCloud 的安全秘钥

判断两个可重集是否相同,给每个元素一个随机的 64 位无符号整数权值,然后全部加起来作为集合的 Hash 值。那么一个子串的 Hash 值可以简单地由前缀和作差得到,每次检验的复杂度为O(1)。 其实只要一个观察 询问中不同的长度只有O(l√en)O(\sqrt len)种 map竟然T了 smg#include #include #include<algorit...
阅读(248) 评论(0)

[随机 Hash] Codeforces 799F Round #413 F. Beautiful fountains rows

就是给题目中给出的每个区间随一个值 然后判断一个区间是否合法 把区间内所有数xor和 再xor上 区间中出现过的所有数的xor和 为 0 前缀和统计下 本人脸黑 单hash交了好几发都是WA 迫不得已双hash#include #include #include #include #include #include...
阅读(321) 评论(0)

[仙人掌同构 Hash] Codeforces Gym 100307 NEERC 13 C. Cactus Automorphisms

其实就是BZOJ3899的加强版 当时写的东西真是不敢恭维还是看Po姐的题解吧 我们把仙人掌拆成圆方树 就可以直接用树hash来做 先找重心 因为我写的时候把两个点也当做点双 那么所有边都是圆方相接如果重心有两个 去代表环的方点就好了 接下来是hash 圆点没问题 子树排完序hash 顺带记一下如果有相同 答案乘上出现次数的阶乘 不是根的方点 也就是一个环 是有顺序的 不能排序 然后看一...
阅读(286) 评论(0)

[边双连通分量 Hash] BZOJ 4435 [Cerc2015]Juice Junctions

是不是只有我以为这是最小割树裸题 然后SB地大力分治跑最小割因为一个点度数不超过3 那么答案就是 0 1 2 3 先不在一个连通块的是0 在一个连通块但不在同一个边双里的是1然后怎么分辨 2 和 3 为2当且仅当存在删去某一条边 两个点不在同一个点双里 为3 也就是两个点所在的点双完全一样 我们尝试删除每条边 然后hash一下就好了#include #include<cst...
阅读(179) 评论(0)

[字符串Hash DP] Codeforces 613E #339 (Div. 1) E. Puzzle Lover

写这个东西的时候很需要冷静 一些细节 比如特殊情况不可避免的重复计算 很恶心 然后 自然溢出被sxbk的hacker卡了 我还因此去学习了怎么卡 构造串卡掉自然溢出BY PoPoQQQ#include #include #include #include #define cl(x) memset(x,0,sizeof(x)...
阅读(229) 评论(0)

[最短路 主席树 Hash] Codeforces 464E #265 (Div. 1) E. The Classic Problem

很棒的数据结构练习题 因为边权太大了 我们不能直接储存 我们用主席树! 比较直接从高位到低位找第一个不同的位 可以Hash下 每次加法 我们找到这一位之后第一个0 那么0变为1 0之前一连串1都变成0 这里有个小trick可以不用打标记 我们先建一棵全0的线段树 清0直接找到对应节点接上去就好了#include #include #include<algo...
阅读(170) 评论(0)

[Hash] Codeforces 452F MemSQL Start[c]UP 2.0 - Round 1 F. Permutation

从左往右扫 对于当前的某个aia_i 我们只判断ai+ka_i+k和ai−ka_i-k是不是都出现过或都没出现过 要是只有一个出现 那么肯定另一个在后面 不合法 对于出现情况我们hash下 可以用线段树或树状数组维护 为什么我这么长#include #include #include using namespace std; typede...
阅读(251) 评论(0)

[字符串Hash 线段树] AOJ 2734 Donut Decoration

考虑把每个点看成一个可以在后面加字符的字符串 每次区间加一个字符串 相当于对区间的hash值做一次运算 这个直接线段树就行了#include #include #include using namespace std; typedef unsigned int uint;inline char nc(){ static char buf...
阅读(103) 评论(0)

[点阵图同构 Hash] POJ 1021 2D-Nim

做博弈做着做着做到了这样一道题 汗 对于每个连通块hash一下 大概有两种方法 连通块内两两距离的平方和 每个点向四个方向最多能走的距离的平方和的和 具体 我没写过...
阅读(159) 评论(0)

[后缀自动机 模板题 || 字符串Hash] HDU 4622 Reincarnation

题目大意:询问子串lr的不同子串数目 暴力建n次后缀自动机 存一下不同子串数目就好啦 不同子串数目 有两种做法 一种是按拓扑序DP 还有就是∑maxs(x)−maxs(fa(x))\sum maxs(x)-maxs(fa(x)) 显然第二种方法更好些 更通用#include #include #include #include<cs...
阅读(207) 评论(0)

[BFS 排列Hash] POJ 1184 聪明的打字员

论文:鬲融--浅谈特殊穷举思想的应用 把排列给hash了 不过并不快  #include #include #include #include using namespace std; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)...
阅读(153) 评论(0)

[DP Hash] 51Nod 1055 最长等差数列

讨论帖:http://www.51nod.com/question/index.html#!questionId=79 DP[i,j]表示以第i个数为倒数第2项,第j个数为最后1项,可以组成的等差数列的长度 然后hash记一下一个数上次出现的时间 这是一篇专门解决这个问题的论文 http://www.cs.uiuc.edu/~jeffe/pubs/pdf/arith...
阅读(516) 评论(0)

[KM 树同构Hash DP] BZOJ 3197 [Sdoi2013]assassin

丢下题解跑:http://blog.csdn.net/PoPoQQQ/article/details/43206463 #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) using namespace std; typedef unsigned long long ull; inline c...
阅读(209) 评论(0)

[仙人掌同构 Hash] BZOJ 3899 仙人掌树的同构

Po姐说:http://blog.csdn.net/PoPoQQQ/article/details/46830025 仙人掌hash 现在变成了仙人掌,那么我把每个环变成一个红点连向环上的所有点,然后把原先环上的边拆除,可以得到一棵树,按树同构做就行了 为了区分红点和普通点的区别,需要为红点设置不同的哈希参数 但是这样有一个BUG,就是原先环上的点是有顺序的,而变成树之后也...
阅读(214) 评论(0)

[Hash] BZOJ 4236 JOIOJI

把 (y-x,z-x)hash 一下就好了 #include #include #include using namespace std; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p...
阅读(197) 评论(0)

[Hash 倍增Floyd] BZOJ 2085 [Poi2010]Hamsters

Po姐的题解:http://blog.csdn.net/popoqqq/article/details/44077515 搬运下复杂度分析吧 这不会T? 首先设第i个字符串的长度为ai,设k=Σai 易知当计算f[i][j]时的复杂度是O(min(ai,aj)) 那么现在的问题就是当k固定时,最大化ΣΣmin(ai,aj) 我们将所有的ai排个序,容易发...
阅读(167) 评论(0)

[堆 思路题] BZOJ 4524 [Cqoi2016]伪光滑数

可持久化可并堆+DP:http://blog.csdn.net/liuguangzhe1999/article/details/51132255 我也不想这个有趣的方法就这么绝迹了呢 但是我不会打 堆:http://blog.csdn.net/dropd/article/details/51138254 #include #include #include #incl...
阅读(297) 评论(0)
21条 共2页1 2 下一页 尾页
    个人资料
    • 访问:264081次
    • 积分:11943
    • 等级:
    • 排名:第1328名
    • 原创:969篇
    • 转载:3篇
    • 译文:0篇
    • 评论:50条
    最新评论