![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
训练题目
文章平均质量分 52
SSL_LHNB
Violence Works Wonders
展开
-
【线段树】2022年10月20日A组 歪脖子树
【线段树】2022年10月20日A组 歪脖子树。原创 2022-10-22 09:06:54 · 135 阅读 · 0 评论 -
Wannafly挑战赛15 E 小W的斜率
他在二维平面上撒下了n个点,这些点相互不同,但一番观察之后,他失望的发现并没有任何两个点连成的直线的斜率是P/Q。因此将所有原坐标系中的点按x’坐标(分母为定值,所以仅需排x*P-y*Q)排序,比较相邻两点在原坐标系中的斜率是否最接近P/Q即可。对于100%的数据:5原创 2022-10-13 16:29:59 · 200 阅读 · 0 评论 -
洛谷P8347 「Wdoi-6」另一侧的月
题目描述思路(转载大佬思路)记所有点的度数均为奇数的情况为 N 态,存在点度数为偶数的情况为 P 态。由博弈论的基本理论,我们只要证明 N 态的所有后继状态均为 P 态,且 P 态均存在一个后继状态为 N 态即可。首先我们能够发现题目中的操作就是选一条边切断,后继状态为其中一边的子树。对于 N 态,我们假设切断的边为 (u,v),则由于原树中 u,v 的度数均为奇数,因此切断后 u,v 的度数均为偶数,此时无论选择哪边的子树都存在一个点度数为偶数。对于 P 态,由于至多只有有限个点度数为偶数,因转载 2022-05-21 09:22:52 · 81 阅读 · 0 评论 -
洛谷P1850 NOIP2016 提高组 换教室
#include<iostream>#include<cstdio>#include<cstring>using namespace std;typedef long long ll;typedef long double ld;const ll N=5e3,V=1e3;ll n,m,t,e;ll room[N][2],dis[V][V];ld pro[N],f[N][N];int main(){ scanf("%lld%lld%lld%lld",原创 2022-05-14 17:40:20 · 91 阅读 · 0 评论 -
洛谷 P4310 绝世好题
Description思路由题目条件 bi&bi−1≠0b_i \&b_{i-1} \neq 0bi&bi−1=0,可以得到:只要两个数的二进制展开中,在任意一位相同的二进制位上,两个数都为1,那么与运算之后结果就一定不为0。考虑到 n≤100000n\leq100000n≤100000,无法使用类似常规的最长不降子序列的做法,我们可以利用位运算的特点——不同二进制位之间的位运算相互独立,来将各个二进制位分开进行统计以此加快效率,这也是位运算题目中经常使用的技巧。例原创 2022-02-19 16:57:57 · 414 阅读 · 0 评论 -
Ybtoj 数位DP.A B数计数
Description我们称十进制形式包含子字符串13,并且可以被 13 整除的数为B数。例如, 130 和 2613 就是B数,而 143 和 2639 不是。您的任务是计算1到n之间的B数个数。思路数位DP的模板题,当然用数位DP做啦!(大佬勿看)由于有“整除”与“包含13”这两个条件,因此我们考虑在DP中增加两维。设f[pos][re][op]表示,当前由最高位填到第pos位(还未填)时,%13的余数为re,包含13的情况为op。(其中,op=2表示当前数已包含13,op=1表示当前数以1原创 2022-01-08 10:47:59 · 299 阅读 · 0 评论 -
来自学长的快乐AK题——Day9 快速失败
快速失败——博弈论(Nim游戏)Description数据规模思路首先,考虑先后手开始时的策略。先手可以随便取,而后手显然不能取与先手取的石子同行同列的石子。那么博弈开始后,剩下的石头里与开始时取走的石头同行同列的石子一定不能取完,最少只能取到1。换言之,这些石子相当于只有ai,j-1个。那么对于剩下的七个格子里的石子,就是一个经典的Nim游戏了。Nim游戏的博弈原创 2021-12-18 16:51:57 · 2288 阅读 · 0 评论 -
来自学长的快乐AK题——Day8 荒地追猎
荒地追猎——数论Description数据规模思路设xi表示第i位的话就是(∑i=0xi∗Bi)%(B−1)=0(\sum_{i=0}x_i*B^i)\%(B-1)=0(i=0∑xi∗Bi)%(B−1)=0化简一下得:∑i=0(xi∗Bi%(B−1))=0\sum_{i=0}(x_i*B^i\%(B-1))=0i=0∑(xi∗Bi%(B−1))=0拆开单独的一个来看:xi∗Bi%(B−1)=(xi%(B−1))∗(Bi%(B−1))=(xi%(B−1))∗1x_i*B^i\%(原创 2021-08-25 15:58:20 · 53 阅读 · 0 评论 -
来自学长的快乐AK题——Day8 洛谷月赛
我们就同时向最大值的左右两边递归(前提是那一边有最大值为关键点的区间),比较这个点是连同左边的l~p-1的区间被合并更优,还是连同右边的p+1~r的区间被合并更优(因为在该节点前被划分的区间肯定有比当前节点更大的最大值,因此无需考虑谁大谁小)。如果不是,设当前递归到的区间为l~r,当前区间的最大值下标为p,那么当前这个最大值连同l~p-1或p+1~r其中的某个区间就必须被合并到另一个最大值为关键点的区间(否则当前区间l~r的最大值就不是一个关键点)。然后我们称d的倍数的位置为关键点。原创 2021-08-25 15:38:59 · 121 阅读 · 0 评论 -
来自学长的快乐AK题——Day7 B
B——简单数论+树状数组Description有3个人员给小朋友发糖果,人员1:如果在小朋友k开始发放糖果,则k,k+1,…,n都能获得1个糖果。人员2:如果在小朋友k开始发放糖果,则k可以获得1个糖果,k+1可以获得2个,往后第i个人获得i个糖果。人员3:如果在小朋友k开始发放糖果,则k可以获得1^2个糖果,k+1可以获得2^2个糖果,往后第i个人获得i^2个糖果。给出多组数据,每组给出人数n,发放次数m,以及m次发放操作的描述,回答m次操作后每个人获得的糖果数(对10^9+7取模)。输入原创 2021-08-25 15:01:12 · 80 阅读 · 0 评论 -
来自学长的快乐AK题——Day7 A
A——子序列自动机Description给出长度为n的字符串S,以及Q个询问每个询问给出一个字符串T,判断T是否为S的一个子序列所有串仅包含小写字母输入第一行给出正整数n,Q第二行给出S接下来Q行,每行给出一个询问T输出对于每个询问输出一行表示答案,符合输出YES,不符输出NO数据规模思路水题一道。扣教练题解:设f[i,j]表示位置i以后字符j第一次出现的位置然后预处理所有的f[i,j]然后每次询问直接暴力跳即可时间复杂度O(26n+q|T|)不过我用的是vect原创 2021-08-23 20:29:44 · 88 阅读 · 0 评论 -
来自学长的快乐AK题——Day6 D
D——蜜汁做法Description输入输出数据规模思路(扣自教练高质量题解)代码#include<iostream>#include<cstdio>#include<algorithm>#include<vector>using namespace std;const int N=1e6,lim=50;int n,m,cnt,ne[N],a[N];bool f,over[N];string s;vector <原创 2021-08-21 17:05:01 · 63 阅读 · 0 评论 -
来自学长的快乐AK题——Day6 C
C——简单数论Description对于一个正整数N,若x满足,(N-0.5x)/(N-x)为正整数,则x为N的幸运数。给出一个N,求出[1,N-1]所有N的幸运数,先回答个数,在将幸运数从小到大输出。输入第一行一个正整数N。输出第一个整数为cnt,表示有多少个满足的幸运数,后面cnt个数,表示满足的幸运数。数据规模对于30%的数据,N<=10^8。对于100%的数据,N<=10^14。思路进行简单的数学推导。根据同余的数学定义(若(a−b)%p=0(a-b)\%p=原创 2021-08-19 21:59:03 · 68 阅读 · 0 评论 -
来自学长的快乐AK题——Day6 B
B——蜜汁做法Description有10个小球,小球的编号从0~9。初始状态按照从左到右编号为0,1,2,3…9的顺序摆在了桌子上,有一个长度大小为n的操作序列。操作序列的每一行表示一次操作都有两个非负整数a,b,表示本次操作将会交换位置a,b的2个小球(下标从0编号)一共有m次询问,每次询问时,将杯子中的小球重置为初始状态。给出[li,ri],连续从操作li进行到ri,连续操作完后依次回答位置0到9,对应位置的小球编号。输入给出n,m。接下来n行,给出第i个操作交换小球的位置a原创 2021-08-18 15:16:05 · 85 阅读 · 0 评论 -
来自学长的快乐AK题——Day6 A
A——蜜汁数论Description给出多组n,m,求C(n,m)的奇偶性。输入输出数据规模思路我看不懂题解的思路,但我有更骚的思路。设sum[i]记录i!i!i!中质因子2的个数。由于n,m最大到1e7,我们就可以进行预处理,像前缀和一样递推出所有sum[i](1≤i≤n1\leq i \leq n1≤i≤n)。对于一个C(n,m),将其化简为(m+1)∗(m+2)∗...∗n(n−m)!\frac{(m+1)*(m+2)*...*n}{(n-m)!}(n−m)!(m+1)∗(原创 2021-08-18 10:38:13 · 63 阅读 · 0 评论 -
来自学长的快乐AK题——Day5 D
D——差分Description多个询问,每个询问给出长度为n的2个序列a,b每次可以对1<i<n的ai进行操作,操作后,问能否通过若干次操作,使得序列a变成 b输入给出询问数T第一行一个正整数n第二行给出序列a第三行给出序列b输出是否能转变,输出Yes或者No,每个询问对应一行数据规模20%:2<=n<=10100%:2<=n<=1e5,0<=ai,bi<=2e9,T<=10思路反正我比赛的时候,对于这道题都没有想暴原创 2021-08-18 08:24:20 · 64 阅读 · 0 评论 -
来自学长的快乐AK题——Day5 C
C——Description一棵树删去任意条边,可以得到若干棵新树。若使让每棵新树的节点数相同。问有多少种方法分割这棵树。设给出的树的结点数为n,并给出n-1条边输入第一行一个正整数N,表示这棵树的结点总数。接下来N-1行,每行两个数字X,Y表示编号为X的结点与编号为Y的结点相连。结点编号的范围为[1,N]。输出一个整数,表示方案数。注意,不砍去任何一条边也算作一种方案。数据规模对于40%的数据,N ≤ 15对于60%的数据,N ≤ 10^5对于100%的数据,N ≤ 10^6数原创 2021-08-18 07:51:05 · 84 阅读 · 0 评论 -
来自学长的快乐AK题——Day5 B
B——并查集+最小生成树Description数据规模思路代码原创 2021-08-18 07:41:17 · 59 阅读 · 0 评论 -
来自学长的快乐AK题——Day5 A
A——简单数论Description数据规模思路由于k是个位数,我们可以很容易的得到k重复n次后的数字:kk...k⏟n个k\underset{n个k}{\underbrace{kk...k}}n个kkk...k。再对这个数进行拆分:kk...k⏟n个k=k∗11...1⏟n个1=k∗(10n−1+10n−2+...+100)\underset{n个k}{\underbrace{kk...k}}=k*\underset{n个1}{\underbrace{11...1}}=k*(10^{n-原创 2021-08-17 15:01:48 · 91 阅读 · 0 评论 -
来自学长的快乐AK题——Day4 D
D——数论Description给定n,求出所有正整数x,满足小于n,且x^2(%n)=1将满足的x按从小到大的顺序依次换行输出思路(来自教练的高质量题解QAQ)代码#include<iostream>#include<cstdio>#include<algorithm>using namespace std;typedef long long ll;const ll N=2000000000;ll n,ans[10000000],cnt;i原创 2021-08-16 15:48:14 · 55 阅读 · 0 评论 -
来自学长的快乐AK题——Day4 C
C——分块Description100%:1<=n,m<=100000,1<=ai<=n思路对于数列进行分块。对于每个区块,用一个双端队列维护它的顺序,用一个桶维护它之中每个数的个数。对于操作1,暴力修改两边的区块。对于中间完整的区块,其实相当于整体前移1位,只需要在每个区块的双端队列的左端,加上上一个区块的右端即可。对于操作2,暴力统计两边的区块,用桶查询中间的区块即可。代码(说起来容易,我改了整整一个下午+晚上。。。去你的分块)#include<ios原创 2021-08-12 22:13:26 · 93 阅读 · 0 评论 -
来自学长的快乐AK题——Day4 B
B——背包问题Description每次真香对下一次真香有影响思路不会有人看不出这是背包吧。。。对于每次真香(其实就是删除一个商品),如果我们每次将这个商品删除后再进行一次背包,显然会爆TLE,并且其中的很多值其实并没有被修改,十分浪费。考虑如何优化。将一个一个的删除转换为一个一个添加,将商品按照被删除的倒序进行背包(还未进行背包的商品相当于是被删除的),这样就只需要一次背包。代码#include<iostream>#include<cstdio>#includ原创 2021-08-12 22:03:26 · 68 阅读 · 0 评论 -
来自学长的快乐AK题——Day4 A
A——简单的数论Description若数列A存在位置k,满足:①i<k,ai<ai+1②i>=k,ai>ai+1则称该数列为单峰数列。给出正整数n,求全排列n中存在多少个单峰数列。100%:2<=n<=10^18思路显然整个序列中最高的点必定是n,剩下的n-1个数按照递增的顺序排列在n的左边,或递减的顺序排列在n的右边。而一旦确定n的左边或右边是哪些数,同时也能确定另一边排列的数字是哪些。排列的顺序又已经固定了(不是递增就是递减),也就是说,只要确定原创 2021-08-12 21:51:36 · 106 阅读 · 0 评论 -
来自学长的快乐AK题——Day3 D
D——简单数论Description定义:设f(x)为x的约数个数若对任意0<i<x都有f(i)<f(x),则称x为66数给出一个正整数n,求出不大于n的最大66数思路(1):不同的质因子个数不会超过10,因为前10个质数的积为2∗3∗5∗7∗11∗13∗17∗19∗23∗29=6,469,693,230>2∗1092*3*5*7*11*13*17*19*23*29=6,469,693,230>2∗10^92∗3∗5∗7∗11∗13∗17∗19∗23∗29=6,原创 2021-08-12 21:25:05 · 76 阅读 · 0 评论 -
来自学长的快乐AK题——Day3 C
C——线段树+DPDescription有n个木桩依次排列,第i个木桩的高度为hi,其上的果冻数量为xi。开始的时候可以选择站在任意一个木桩上,每次跳跃不限长度而且只能从左向右跳跃,但只能跳到高度与当前所站高度差绝对值小于等于m的柱子上。问最多能拿到多少个果冻。最终不一定要落在最后一个木桩上。思路由于题目中提示异常明显:只能从左向右跳跃,因此这道题显然为DP题。设fi表示到了高度i能获得的最大果冻数。考虑任意木桩i,能转移到f[h[i]]的状态范围为f[h[i]-m~h[i]+m],我们显然原创 2021-08-12 21:21:58 · 68 阅读 · 0 评论 -
来自学长的快乐AK题——Day3 B
B——暴力出奇迹Description一个序列S,如果S是回文的且分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共回文子序列。给一个长度为n的字符串a和一个长度为m的字符串b,求a和b的最长公共回文子序列的长度。对于100%的数据,满足1≤n≤100000,1≤m≤20,字符串只包含小写字母。思路直接暴力好吧,dfs枚举字符串b的子序列(因为它好欺负,长度只有20),如果子序列是回文的,再拿到a串中匹配。代码#include<iostre原创 2021-08-12 21:21:10 · 61 阅读 · 0 评论 -
来自学长的快乐AK题——Day3 A
A——线段树+01背包Description有n个信号,第i个信号强度为bi(可能<0)。总体强度为各操作信号的强度之和。为保证信号强度需要删除某些信号。有m个操作人员,第i个人只会删除编号在Li和Ri之间的信号,每删除一个信号,花费ci格能量。飞船一共有k格能量。问在队友删除完信号后,总体强度最大是多少。思路很明显的背包吧,难点就是如何将这个题目转化成背包。由于人可以重复使用,而信号只能被删除一次,所以我们考虑将信号转换为物品进行01背包。显然对于每个信号来说,最优的费用就是所有原创 2021-08-12 21:20:14 · 52 阅读 · 0 评论 -
来自学长的快乐AK题——Day2 D
D——差分。。。之类的东东Description题面有误,应该为子串长度。(否则这题就sb到爆了)思路考虑差分的思想,为男生则赋值+1,为女生则赋值-1,做前缀和。倘若一段区间i~j内男女个数相等,则该区间的所有值之和显然等于0(因为个数相等的+1和-1互相抵消了)。用前缀和来表示,即s[j]-s[i-1]=0。简单移项可以得到s[j]=s[i-1]。也就是说,如果s[j]=s[i],那么i+1~j就是一个男女人数相等的区间。用桶记录之前出现过的最早的s数组值的位置(因为要求最大),倘若之后原创 2021-08-13 08:04:40 · 49 阅读 · 0 评论 -
来自学长的快乐AK题——Day2 C
C——维护第k大的数Description给出一个长度为n的序列A描述一个长度为n的全排列a,Ai表示前i-1个数中有多少个数比ai大。请求出这个全排列a思路从后往前遍历A,根据题目中的定义,a的前n-1个数中有An个数比an大,换言之,an就是1~n中第An+1大的数。同理,an-1就是除去已经确定的an后第An-1+1大的数。以此类推,就将问题转化为如何维护一个序列中的第k大数。算法还是有很多,例如快排(nlogn),归并(nlogn或n),我是采用更好写也更快的桶排(n),卡到了O(n2)原创 2021-08-13 08:03:52 · 154 阅读 · 0 评论 -
来自学长的快乐AK题——Day2 B
B——最小生成树Descriptionn个人,每个人都有一份情报人之间都可以交流,交流有对应的费用,交流完后各自享有对方的情报A与B交流,A与C交流,B与C也可以互相享有派遣n个人中任意一人去执行任务都有对应的费用要求:派遣人去执行任务,派遣的人需要包含所有的情报(不一定只派遣一个),问最小花费思路比赛时一眼看过去,就知道遇见了你,我的最小生成树!首先,考虑两个人花一定费用见面,就能互相知道对方的情报,就联想到用一条边将两个点连接起来。考虑派遣出去的人必须得到所有人的情报,就联想到一张图中原创 2021-08-13 08:01:54 · 65 阅读 · 0 评论 -
来自学长的快乐AK题——Day2 A
A——蜜汁做法Descriptionn个小球排成一列,第i个小球颜色为ai定义小球i与j的距离为|(i-j)*(ai-aj)|求所有小球间距离之和i与j 和 j与i 不必重复计算100%:n<=1000000,0<=ai<=1思路由条件容易得到:只有当ai-aj不为0,即ai和aj不相等时,距离才不为0。也就是说,只有ai与aj不相等的两个小球才能产生贡献。观察数据范围,很容易发现一个突破口:ai不是0就是1。那么对于一个0色球来说,只有1色球能与它产生贡献,1色球同理。原创 2021-08-13 08:00:32 · 83 阅读 · 0 评论 -
来自学长的快乐AK题——Day1 D
D——简单的容斥+快速幂Description有n个人依次排队打饭,有m种饭菜可以选择,每个人可能选择其中一种,如果相邻排队的人打的菜一样,那么就会影响彼此吃饭的心情,求这个队伍中有人被影响心情的状态数,对100003取余。思路直接考虑有人被影响心情的方案数显然有些困难,但容易发现总方案数和没有人被影响心情的方案数更容易计算,我们就可以考虑容斥,用总方案数减去不合法的方案数,得到合法的方案数。考虑队伍里的n个人,每个人都有m种选择,显然总方案数为mnm^nmn。考虑没有人被影响心情的方案数,第一原创 2021-08-16 15:48:02 · 56 阅读 · 0 评论 -
来自学长的快乐AK题——Day1 C
C——模拟+维护中位数Description给出一个长度为n的排列ai以及seed,求ans=2∗∑l=1n∑r=lnseed(l−1)∗n+rmid(l,r)ans=2*\sum _{l=1}^n \sum _{r=l}^n seed^{(l-1)*n+r}mid(l,r)ans=2∗l=1∑nr=l∑nseed(l−1)∗n+rmid(l,r)结果对1000000007取模。mid(l,r)指al,al+1,…,ar-1,ar 的中位数。思路a是一个全排列,n<=10^4如果进原创 2021-08-16 15:47:44 · 121 阅读 · 0 评论 -
来自学长的快乐AK题——Day1 B
B——蜜汁做法Description思路对于一个矩阵,左上角为[x1,y1],右下角为[x2,y2]它的权值计算为ax1*(by1+…+by2) +…ax2*(by1+…+by2)即(ax1+…+ax2)*(by1+…+by2)发现x跟y没有必然的关系可以分开处理枚举a的可能区间[x1,x2],预处理所有的by区间和对于一个限制[L,R]若x选定为[x1,x2],则(L/suma[x1,x2],R/suma[x1,x2])为by区间和可以选择的范围(注意考虑小数取整)对于原创 2021-08-16 15:47:13 · 64 阅读 · 0 评论 -
来自学长的快乐AK题——Day1 A
A——快乐区间动规Description定义操作a(X)b= ((a&b) + (a|b))>>1给出n个数ai每次用操作合并任意相邻ai求进行n-1次操作以后可能得到的最终结果所有结果从小到大输出思路考虑区间DP,设fi,j,k表示区间i~j能否通过合并得到数字k,为1则能,为0则否。考虑如何转移。用区间DP的老套路,枚举分割点g,将区间i~j分割为区间i~g和区间g+1~j,将两个小区间的状态合并得到大区间的状态。对于任意状态fi,g,p和fg+1,j,q,若两者原创 2021-08-13 08:17:56 · 66 阅读 · 0 评论 -
TJOI2013 单词(Ybtoj AC自动机.B 单词频率)
题目描述某人读论文,一篇论文是由许多单词组成。但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次。输入格式第一行一个整数n,表示有多少个单词,接下来n行每行一个单词。输出格式输出 个整数,第i行的数字表示第i个单词在文章中出现了多少次。样例输入样例3aaaaaa输出样例631思路十分有意思的一道题,刷新了一波我对AC自动机的理解。仔细分析样例,可以发现要求的为一个单词在所有单词中(包括自己)的出现次数。首先,如果一个单词在一段字符串原创 2021-07-06 16:17:50 · 111 阅读 · 0 评论 -
洛谷P4551 最长异或路径
题目描述给定一棵nn个点的带权树,结点下标从11开始到NN。寻找树中找两个结点,求最长的异或路径。异或路径指的是指两个结点之间唯一路径上的所有边权的异或。思路首先说,这道题加深了我对异或的理解。异或知识储备归零律:a^a=0恒等律:a^0=a交换律:a^b=b^a结合律:a^b^c=a^(b^c)自反:a^b^b=a这些性质都很有用,有一道例题可以很好表现它们的用途。一个整型数组里除了1个数字之外,其他的数字都出现了两次,找出这1个数字。这道题可以很方便的用异或求解。将所原创 2021-07-03 16:48:30 · 70 阅读 · 0 评论 -
洛谷1102 A-B数对
题目描述给出一串数以及一个数字 C,要求计算出所有 A - B = C 的数对的个数(不同位置的数字一样的数对算不同的数对)。说明/提示对于 75% 的数据,1≤N≤20001 \leq N \leq 20001≤N≤2000对于 100% 的数据,1≤N≤2×1051 \leq N \leq 2 \times 10^51≤N≤2×105保证所有输入数据都在 32 位带符号整数范围内。思路虽然这道题是道水题,思路也比较简单(虽然我还是没想出来),但这道题很好的体现了hash表的用途——查询原创 2021-01-25 21:18:22 · 354 阅读 · 0 评论 -
洛谷3398 仓鼠找sugar
题目描述小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n。地下洞穴是一个树形结构。这一天小仓鼠打算从从他的卧室(a)到餐厅(b),而他的基友同时要从他的卧室(c)到图书馆(d)。他们都会走最短路径。现在小仓鼠希望知道,有没有可能在某个地方,可以碰到他的基友?小仓鼠那么弱,还要天天被zzq大爷虐,请你快来救救他吧!输入格式第一行两个正整数n和q,表示这棵树节点的个数和询问的个数。接下来n-1行,每行两个正整数u和v,表示节点u到节点v之间有一条边。接下来q行,每原创 2021-01-25 08:44:57 · 105 阅读 · 0 评论 -
洛谷6374 树上询问
题目描述给定一棵 n 个点的无根树,有 q 次询问。每次询问给一个参数三元组 (a,b,c) ,求有多少个 i 满足这棵树在以 i 为根的情况下 a 和 b 的 LCA 为 c 。数据范围对于所有数据:1≤n≤5×1051 \leq n \leq 5\times10^{5}1≤n≤5×105, 1≤q≤2×1051 \leq q \leq2 \times 10^{5}1≤q≤2×105思路分析题意,显然,如果c在a到b的路径上才有解,否则i的个数肯定为0。而合法的i的数量就等于总节点数分别减去以原创 2021-01-24 20:30:25 · 248 阅读 · 0 评论