首页 > 代码库 > 套题T5//各种树
套题T5//各种树
树(tree)
【题目描述】
方方方种下了三棵树,一年后,第一棵树长出了n个节点。
方方方会向你提出m个询问,每个询问给出两个数i,j,你需要回答i号节点和j号节点在树上的距离。
【输入数据】
第一行两个整数n,m。接下来n-1行每行两个整数a,b表示一条边。接下来m行每行两个整数i,j表示询问。
【输出数据】
m行,每行一个整数表示答案。
【样例输入】
3 2
1 2
1 3
3 2
1 1
【样例输出】
2
0
【数据范围】
对于30%的数据,n,m<=1000。
对于100%的数据,n,m<=500000。
树(tree2)
【题目描述】
方方方种下了三棵树,两年后,第二棵树长出了n个节点,其中1号节点是根节点。
方方方进行m次操作,每个操作为:
(1)给出两个数i,x,将第i个节点的子树中,与i距离为斐波那契数的节点权值+x(包括i本身)。
(2)给出一个数i,求出第i个节点的子树中,与i距离为斐波那契数的节点的权值和(包括i本身)。
【读入数据】
第一行两个整数n,m。接下来n-1行每行两个整数a,b表示一条边。接下来m行每行第一个数表示操作类型,接下来1或2个数表示i (,x)。
【读出数据】
对于每个(2)操作,输出一行一个整数表示答案。
【样例输入】
5 3
1 2
2 3
3 4
4 5
1 1 1
1 2 2
2 4
【样例输出】
1
【数据范围】
对于30%的数据,n,m<=1000。
对于100%的数据,n,m<=100000,|x|<=10^9。
树(tree3)
【题目描述】
方方方种下了三棵树,两年后,第二棵树长出了n个节点,其中1号节点是根节点。
方方方使用魔法为每个节点按以下规则染色:
(1) 每个节点为红色,黑色或白色。
(2) 对于每个叶节点i,有ri,bi,wi三个参数,满足ri+bi+wi=1。方方方分别以ri,bi,wi的概率给i染上红色,黑色和白色。
(3) 对于每个非叶节点,设它的子树大小为x,当它的子树中的其它x-1个节点都被染色后,对它进行染色。假设这x-1个节点分别有r,b,w个红色、黑色和白色,那么它被染成红色、黑色、白色的概率分别为r/(x-1),b/(x-1),w/(x-1)。
染色结束后,方方方按以下规则计算这棵树的魔法值:
(1) 对于每个有序点对(i,j),如果它们的颜色集合为{红色,黑色}且i是j的祖先,魔法值+rb。
(2) 对于每个有序点对(i,j),如果它们的颜色集合为{红色,白色}且i是j的祖先,魔法值+rw。
(3) 对于每个有序点对(i,j),如果它们的颜色集合为{黑色,白色}且i是j的祖先,魔法值+bw。
你需要求出魔法值的期望对998244353取模的结果。
【读入数据】
第一行四个整数n,rb,rw,bw,接下来n-1行每行两个整数a,b表示一条边。接下来n行每行三个整数ri,bi,wi,如果i是叶子节点,保证ri+bi+wi=1,否则ri=bi=wi=0。
【读出数据】
输出魔法值的期望对998244353取模的结果。
【样例读入】
2 1 2 3
1 2
1 0 0
499122177 499122177 0
【样例输出】
499122177
【数据范围】
对于10%的数据,n<=10。
对于30%的数据,n<=50。
对于另外20%的数据,rb=rw=bw。
对于再另外20%的数据,每个叶子节点i满足ri=bi=wi。
对于100%的数据,n<=1000,0<=rb,rw,bw,ri,bi,wi<998244353。
套题T5//各种树