
哈希表
二分抄代码
去了18ec没资格去19ec的反向训练选手
展开
-
Aizu - 2784 Similarity of Subtrees JAG2016
https://vjudge.net/contest/145955#problem/E一开始想了半天怎么匹配。。。后来发现可以直接对这个值做一个hash,就是个水题了。。。因为每层的个数不超过n,所以bas设个比较大的质数就行了#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ull;const int maxl=3e5+10;const原创 2021-01-29 20:06:10 · 156 阅读 · 0 评论 -
洛谷P2757 [国家集训队]等差子序列
https://www.luogu.com.cn/problem/P2757#include<bits/stdc++.h>using namespace std;typedef unsigned long long ull;const int maxl=1e5+10;const int bas=1423333;int n,ans;int a[maxl],pre[maxl],suf[maxl];ull mi[maxl];struct bit{ ull b[maxl];原创 2021-01-28 00:59:31 · 265 阅读 · 1 评论 -
codeforces1175F The Number of Subpermutations
https://codeforces.com/problemset/problem/1175/F艹,还能这么玩?由于我们需要一段序列包含1-r-l+1,直接1-n随机一个ull数字b[i]然后一段区间要是出现了子全排列,那么这段区间异或之和就是b[i]异或之和(加法之和应该也可以)然后我们只要枚举每个1的两边,假设最大数字再右边(之后反着再来一遍),看一下r-mx+1这段区间是不是子全排列就行了这题分治怎么做啊。。。不会啊。。。#include<bits/stdc++.h&g原创 2020-10-13 23:43:18 · 309 阅读 · 0 评论 -
gym102460 Rush Hour Puzzle 2019ICPC Taipei
https://codeforces.com/gym/102460目标就是让1的右端点移动到(3,6)的位置,从(3,6)出去还要两步,那么最多就是移动8步,又因为最多只有10个物品,而且我们可以用hash标记棋盘的某个状态是否出现过,那么每次尝试移动每个物品,bfs就行了,最坏情况是(10*2)^8的状态,但是由于互相碰撞的原因,实际情况会少很多状态,30ms就跑过了#include<bits/stdc++.h>using namespace std;typedef long l原创 2020-09-09 23:03:31 · 220 阅读 · 0 评论 -
hdu6768 The Oculus 2020hdu多校第2场
http://acm.hdu.edu.cn/showproblem.php?pid=6768看到只差了一位,也就是一个fibonacci数,也就是a*b-c=f_k,那么只要找到这个fk就行了那么直接hash就行了,搞两个取模,基本冲突不了,加了读入优化2s过,其实可以换unordered_map更快一些,但是不能映射pair,需要手动把两个数字拼成long long。也可直接扫一遍找#include<bits/stdc++.h>using namespace std;name原创 2020-07-23 18:53:52 · 341 阅读 · 0 评论 -
hdu5469 Antonidas 2015上海网络赛
http://acm.hdu.edu.cn/showproblem.php?pid=5469点分治加字符串hash先预处理出要找到的字符串的前缀和后缀的hash值,使用ull自然溢出,幂取131(之前听说字符串hash这样比较好那么我们再点分治的时候,知道从当前rt向下到每个点的深度dis[j],也知道它的hash值a[j],如果刚好和pre[dis[j]]或者suf[slen-dis...原创 2020-01-15 10:39:52 · 174 阅读 · 0 评论 -
E - Squares POJ - 2002
记住一个教训,vector把数组开出来不添加值也会占空间,vector e; e.clear(),无法减少空间,必须用vector (e).swap(e),才能释放内存空间,所以以后做hash题,最好不用vector存公共溢出区,直接开放寻址法,省时省空间。记住一个教训,vector把数组开出来不添加值也会占空间,vector e; e.clear(),无法减少空间,必须用vector (原创 2017-08-07 18:59:26 · 316 阅读 · 0 评论 -
UVALive 8331 Mars
对于询问为长度为len的字符串,原字符串中长度为len的字符串一共只有n-len+1个,所以字符串hash以后最多有n-len+1个字符串的不同数值,而且询问字符串任意变异类型,字符串一定是不一样的,所以可以放心大胆dfs,dfsn-len+1次以后,一定就能找到,要么就没有n-len+1那么多种变异,就有可能为impossible。以前TB说过字符串hash直接用两个大素数进行%,然后set存起...原创 2018-07-15 16:18:57 · 248 阅读 · 0 评论