Biology(湖南集训)】的更多相关文章

题目大意:n个字符串,m个操作,可以插入字符串,也可以询问某T个字符串的最长后缀 题解:Trie+lca Trie树的插入与查询操作.把字符串反转就相当于求公共前缀. lca的深度就是公共前缀的长度. 代码: //biology include<iostream> #include<cstring> #include<cstdio> #define maxn 1000009 using namespace std; ],dad[maxn][]; char s[maxn]…
题面:P3899 [湖南集训]谈笑风生 题解: 我很喜欢这道题. 因为A是给定的,所以实质是求二元组的个数.我们以A(即给定的P)作为基点寻找答案,那么情况分两类.一种是B为A的父亲,另一种是A为B的父亲. 第一种情况很好处理,写法见代码,懒得讲,反正很简单的. 第二种情况的话,按Dfs序建主席树,用主席树维护下标为Dep的序列,每次用Size-1(因为不能取本身:Size[i]即为以i为根的子树节点数)去更新, 询问的时候在以A为根的子树中查找Dep[A]+1~Dep[A]+K的和即可. 不思…
P3900 [湖南集训]图样图森破 链接 分析: 感觉像个暴力. 可以枚举回文串的回文中心,即枚举一个串,枚举一个串的位置作为回文中心,然后求出这个串内的回文串的长度. 此时如果回文串两端都没有到这个串的端点,那么以这个点作为回文中心的长度就直接算出来了. 如果回文串的长度刚好是这个串的长度,那么INF. 如果回文串一侧到了端点,那么枚举所有串,看看能否加到另一侧,来构成回文串.此过程记忆化搜索即可. 复杂度$O(nL \log nL)$ 代码: #include<cstdio> #inclu…
难度:☆☆☆☆☆☆☆ 题解: 有个定理,另sum(x)表示小于等于x的数中与x互质的数的和 sum(x)=φ(x)*x/2    最后可知f(x)=x  (f(1)=2)  当然打表能知道. 然后就转化为了求Σi^k 然后就是拉格朗日插值法了,不在我理解范畴........ 但这个博客介绍挺好哒 http://www.cnblogs.com/ECJTUACM-873284962/p/6833391.html std: #include <cstring> #include <ctime&…
题目描述 设 T 为一棵有根树,我们做如下的定义: • 设 a 和 b 为 T 中的两个不同节点.如果 a 是 b 的祖先,那么称"a 比 b 不知道高明到哪里去了". • 设 a 和 b 为 T 中的两个不同节点.如果 a 与 b 在树上的距离不超过某个给定常数 x,那么称"a 与 b 谈笑风生". 给定一棵 n 个节点的有根树 T,节点的编号为 1 ∼ n,根节点为 1 号节点.你需要回答 q 个询问,询问给定两个整数 p 和 k,问有多少个有序三元组 (a;…
传送门 nmyzd,mgdhls,bnmbzdgdnlql,a,wgttxfs 对于一个点\(a\),点\(b\)只有可能是他的祖先或者在\(a\)子树里 如果点\(b\)是\(a\)祖先,那么答案为a子树大小\(sz_a-1\) 否则,答案为\(sz_b-1\) 加上\(k\)的限制后,如果根节点1的深度\(de_1=1\)那么节点\(a\)的答案就是\(\sum_{b在a子树中,b\ne a,dist(a,b)\leq k}\ \ (sz_b-1)+\min(k,de_a-1)*(sz_a-…
题意 题目链接 Sol 线段树合并板子题,目前我看到两种写法,分别是这样的. 前一种每次需要新建一个节点,空间是\(O(4nlogn)\) 后者不需要新建,空间是\(O(nlogn)\)(面向数据算空间你懂得),但是需要离线,因为共用节点的缘故,之后的修改可能会修改到不需要修改的节点(好绕啊): 这题就是把向上向下的贡献分开算,然后移一下项发现只与深度有关 可以直接二维数点,也可以线段树合并 #include<bits/stdc++.h> using namespace std; const…
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=3653 https://www.luogu.org/problemnew/show/P3899 思路 三个点肯定在1到c的链上 a已经确定 1.b是a的祖先,答案就是(siz[u]-1)*min(dis[u]-1,k) 2.a是b的祖先,要求\(1<=dis[b]-dis[a]<=k\) \(1+dis[a]<=dis[b]<=k+dis[a]\) 第一问可以快速求出 第二…
题意 题目描述 **记者弄了个大新闻,这个新闻是一个在 [0,n) 内等概率随机选择的整数,记其为 x.为了尽可能消除这个大新闻对公众造成的不良印象,我们需要在 [0,n)内找到某一个整数 y,使得 x ⊕ y 达到最大值.这里 ⊕ 代表异或. 问题在于,**记者有可能对大新闻进行了加密.情报显示,大新闻没有被加密的概率为 p.我们决定采取这样的策略:如果大新闻没有被加密,那么我们选出使得 x ⊕ y 最大的 y:否则,我们在 [0,n) 内等概率随机选择一个整数作为 y. 请求出 x ⊕ y…
题目链接 容易发现\(a,b,c\)肯定是在一条直链上的. 定义\(size(u)\)表示以\(u\)为根的子树大小(不包括\(u\)) 分两种情况, 1.\(b\)是\(a\)的祖先,对答案的贡献是 \[min(deep(p)-1,k)*size(p)\] 显然是可以直接算的. 2.\(b\)是\(a\)的孩子,对答案的贡献为 \[\sum_{\text{v是u的孩子且deep(v)<=deep(u)+k}}size[v]\] 后半段就可以主席树来维护了. 下标为深度,值为\(\sum siz…