洛谷P5002 专心OI - 找祖先】的更多相关文章

题目概括 题目描述 这个游戏会给出你一棵树,这棵树有\(N\)个节点,根结点是\(R\),系统会选中\(M\)个点\(P_1,P_2...P_M\). 要Imakf回答有多少组点对\((u_i,v_i)\)的最近公共祖先是\(P_i\). Imakf是个小蒟蒻,他就算学了LCA也做不出,于是只好求助您了. Imakf毕竟学过一点OI,所以他允许您把答案模 \((10^9+7)\) 输入输出格式 输入格式 第一行 \(N , R , M\) 此后\(N-1\)行 每行两个数\(a,b\) 表示\(…
P5002 专心OI - 找祖先 给定一棵有根树(\(n \leq 10000\)),\(M \leq 50000\) 次询问, 求以 \(x\) 为 \(LCA\) 的点对个数 错误日志: 看下面 Solution 设点 \(u\) 的子树大小为 \(size[u]\) 现询问以 \(u\) 为 \(LCA\) 的点对个数 设 \(u\) 的子节点为 \(v_{1}, v_{2},...,v_{m}\) 我们现在统计点对中一个点在 \(v_{1}\) 内的答案数 一个点在 \(v_{1}\)…
题目描述 这个游戏会给出你一棵树,这棵树有NN个节点,根结点是RR,系统会选中MM个点P_1,P_2...P_MP 1 ​ ,P 2 ​ ...P M ​ ,要Imakf回答有多少组点对(u_i,v_i)(u i ​ ,v i ​ )的最近公共祖先是P_iP i ​ .Imakf是个小蒟蒻,他就算学了LCA也做不出,于是只好求助您了. Imakf毕竟学过一点OI,所以他允许您把答案模 (10^9+7)(10 9 +7) 输入格式 第一行 N , R , MN,R,M 此后N-1N−1行 每行两个…
专心OI - 找祖先 题目背景 \(Imakf\)是一个小蒟蒻,他最近刚学了\(LCA\),他在手机\(APP\)里看到一个游戏也叫做\(LCA\)就下载了下来. 题目描述 这个游戏会给出你一棵树,这棵树有\(N\)个节点,根结点是\(R\),系统会选中\(M\)个点\(P_1,P_2...P_M\),要\(Imakf\)回答有多少组点对\((u_i,v_i)\)的最近公共祖先是\(P_i\).\(Imakf\)是个小蒟蒻,他就算学了\(LCA\)也做不出,于是只好求助您了. \(Imakf\)…
[传送门] 我们还是先将一下算法的步骤,待会再解释起来方便一点. 算法步骤 首先我们算出每个子树的\(size\). 我们就设当前访问的节点 然后我们就得到了当前这个节点的答案是这个树整个的\(size\)的两倍\(-1\),再加上两两子树的\(size\)的积. 也就是$ans=size[u] \times 2 - 1 +\sum size[i] * size[j] $ 其中\(i\)和\(j\)是u的儿子. 一下就是核心代码: register LL ans = sz[p] * 2 - 1;…
自己yy的方法yyyyyyyy着就A了,写篇博客庆祝一下. 题目: 洛谷3181 分析: SAM(可能是)模板题(不会SAM的同学戳我:[知识总结]后缀自动机的构建). 对\(s1\)建出SAM,用\(s2\)在上面跑.用\(size[i]\)表示结点\(i\)的\(Right\)集合大小(直接拓扑排序后DP就行).既然要求\(s2\)中有多少子串在\(s1\)中出现了,那么用\(f[i]\)表示结点\(i\)对应的所有子串在\(s2\)中一共出现了多少次(位置不同算多次).答案就是\(\sum…
画个图就能多少看出些规律 证明借鉴一下大牛的题解: 设从A到B,经过的深度最小的点为X 同理,C,D的为Y 题目是一个点从A出发到B 一个从C出发到D 那么从A到B可以分解成 先从A到X 再从X到B... C同理 假设能相遇 那么 要么在A到X的过程A,B相遇 要么在X到B的过程A,B相遇 对于在A到X的过程相遇的情况 又可以分解为: 情况1: 在A到X的过程和 C到Y的过程 中A,B相遇 此时相遇点的深度必然大于等于MIN(X深度,Y深度) 情况2: 在A到X的过程和 Y到D的过程 中A,B相…
题目描述 Farmer John is at the market to purchase supplies for his farm. He has in his pocket K coins (1 <= K <= 16), each with value in the range 1..100,000,000. FJ would like to make a sequence of N purchases (1 <= N <= 100,000), where the ith p…
P3092 [USACO13NOV]没有找零No Change 题目描述 Farmer John is at the market to purchase supplies for his farm. He has in his pocket K coins (1 <= K <= 16), each with value in the range 1..100,000,000. FJ would like to make a sequence of N purchases (1 <= N…
题目大意:给定一个长度为 N 的序列,每个点被染了一个颜色.现有 M 个询问,每个询问查询区间 [l,r] 内的点是否颜色都是不同的. 题解:莫队裸题. 直接维护区间颜色数,用 cnt[] 记录下区间中颜色出现的次数,用 now 记录下区间颜色数,查询时只需比较区间颜色数和区间长度的关系即可. 代码如下 #include <bits/stdc++.h> #define fi first #define se second #define pb push_back #define mp make…