【hash】Similarity of Subtrees】的更多相关文章

图片来源: https://blog.csdn.net/dylan_frank/article/details/78177368 [题意]: 对于每一个节点来说有多少对相同的子树. [题解]: 利用层数进行hash,返回到对应的节点,最后标记后用等差数列来求出所有方案数. #pragma GCC optimize(2) #include<bits/stdc++.h> using namespace std; typedef unsigned long long ull ; ; ; vector…
[题目大意] 已知多项式方程:a0+a1*x+a2*x^2+...+an*x^n=0.求这个方程在[1,m]内的整数解(n和m均为正整数). [思路] *当年考场上怒打300+行高精度,然而没骗到多少orz 然而正解只有60+行 [前铺]f(n) mod p=f(n mod p) mod p 取四个素数,分别对每个ai取模.先预处理x=0..p-1的情况,直接代入多项式计算即可.再在O(m)时间内检验1..m,对于≥p的利用前铺公式可得.如果模四个素数结果均能得到0,说明这个数是方程的解. P.…
[题意]: 给出s串出来,能否找到一个前缀 ,通过多次前缀进行拼接.构成s串.如果有多个,请输出最多次数那个. 如:aaaa 可以用1个a,进行4次拼接 可以用2个a,进行2次拼接 可以用4个a,进行1次拼接 提供两种做法: 第一种是:利用kmp算法中求解  longest prefix table的方法, 找到最后一个位置的上的 p[len-1],如果用总长度减去(len-p[len-1])能否通过这一个前缀来拼接出来. 就是判断是否能整除. #include<bits/stdc++.h>…
[哈希和哈希表]Seek the Name, Seek the Fame 题目描述 The little cat is so famous, that many couples tramp over hill and dale to Byteland, and asked the little cat to give names to their newly-born babies. They seek the name, and at the same time seek the fame.…
[题目链接] # 10038. 「一本通 2.1 练习 4」A Horrible Poem [参考博客] A Horrible Poem (字符串hash+数论) [题目描述] 给出一个由小写英文字母组成的字符串 SS,再给出 qq 个询问,要求回答 SS 某个子串的最短循环节.如果字符串 BB 是字符串 AA 的循环节,那么 AA 可以由 BB 重复若干次得到. [算法]-首先对于长度为 lenlen 的子串,循环节长度为 xx 的充要条件:[1,len−x][1,len−x]串的哈希值等于 …
[来源]:bzoj3916 [参考博客] BZOJ3916: [Baltic2014]friends [ 哈希和哈希表]Three Friends [Baltic2014][BZOJ3916]friends [题解] 首先hash整个串,然后分成三种情况,分别是前半段,中间,后半段,三段的字母试图去掉看能否拼起来. 如果可以,那么还需要考虑是否为唯一的. 唯一的意思是: 串S,如果有选择两个不同的串S也能构成这个原串. 代码还是参考别人写的. #include<cstdio> #include…
[链接]:A [题意]:给你n个数的序列和k.判断是否可以三个数组成k(同一个数可以拿多次) [分析]:每个数vis记录一下.2层循环.两数之和不超过k以及剩下的数出现在序列中那么ok. [代码]: #include <bits/stdc++.h> #define ll long long #define pb push_back #define inf 0x3f3f3f3f #define pll pair<ll,ll> #define rep(i,a,b) for(int i=…
[来源] https://loj.ac/problem/2427 [参考博客] LOJ#2427. 「POI2010」珍珠项链 Beads [题解]: 复杂度计算: 暴力枚举k每次计算是n/2+n/3+n/4+...+1的,用调和级数算是…
题意: 给你一棵树,问你有多少个组合的相似: 相似是a结点的子树和b结点的子树的每一层的结点数相等: 思路: HASH来搞: 主要也没学过散列表,以及一个散列函数的构造: 其实看下面程序很简单,手跑案例就可以发现,每个结点有:a*pri^b,系数a就是在该节点下的b层结点个数. 暂时只理解到这个层面上,以后能用这个思想再用吧: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <bits/stdc++…
题目描述 如果一个字符串可以被拆分为AABBAABB的形式,其中 A和 B是任意非空字符串,则我们称该字符串的这种拆分是优秀的. 例如,对于字符串aabaabaaaabaabaa,如果令 A=aabA=aab,B=aB=a,我们就找到了这个字符串拆分成 AABBAABB的一种方式. 一个字符串可能没有优秀的拆分,也可能存在不止一种优秀的拆分.比如我们令 A=aA=a,B=baaB=baa,也可以用 AABBAABB表示出上述字符串:但是,字符串 abaabaaabaabaa 就没有优秀的拆分.…