【jzoj4888】【最近公共祖先】
来源:互联网 发布:网商贷淘宝信用贷款 编辑:程序博客网 时间:2024/06/08 10:16
题目大意
n层的满k叉树T,求对于每一对(i,j)(1≤i,j≤T的点数),LCA(T,i,j)的深度的和是多少。这个数字n层的满k叉树指一棵带标号的有根树,深度为i(0≤i
解题思路
显然得出ans=∑n−1i=1i∗ki∗(((kn−i−1)/(k−1))2−k∗((kn−i−1−1)/(k−1))2)
化简得ans=(k2n−kn+1+kn−k)/(k−1)3−(2n−2)∗kn/(k−1)2
具体化简方法不多说,大概思路是使用等比数列求和,以及错位相消法。
code
#include<cstdio>#include<cstring>#include<algorithm>#define LL long long#define min(a,b) ((a<b)?a:b)#define max(a,b) ((a>b)?a:b)#define fo(i,j,k) for(int i=j;i<=k;i++)#define fd(i,j,k) for(int i=j;i>=k;i--)using namespace std;LL const mod=998244353;LL n,k;LL Pow(LL x,LL y){ LL z=1; for(;y;){ if(y%2)z=(z*x)%mod; x=(x*x)%mod; y/=2; } return z;}int main(){ freopen("lca.in","r",stdin); freopen("lca.out","w",stdout); scanf("%lld%lld",&n,&k); printf("%lld",((((Pow(k,2*n)-Pow(k,n+1)+Pow(k,n)-k)%mod+mod)%mod*Pow(k-1,mod-2)%mod-(2*n-2)*Pow(k,n)%mod)%mod+mod)%mod*Pow(k-1,mod-2)%mod*Pow(k-1,mod-2)%mod); return 0;}
0 0
- jzoj4888 最近公共祖先
- 【jzoj4888】【最近公共祖先】
- Jzoj4888 最近公共祖先
- 【JZOJ4888】【NOIP2016提高A组集训第14场11.12】最近公共祖先
- JZOJ4888【NOIP2016提高A组集训第14场11.12】最近公共祖先
- 最近公共祖先LCA
- 最近公共祖先(LCA)
- 最近公共祖先
- Lca 最近公共祖先
- 【最近公共祖先】Tree
- LCA----最近公共祖先
- 最近公共祖先问题
- LCA (最近公共祖先)
- POJ1330(最近公共祖先)
- 最近公共祖先
- 最近公共祖先模版
- 最近公共祖先问题
- 最近公共祖先
- Hive环境搭建
- mac使用obs进行斗鱼直播无法录制内置声音
- 反射中,Class.forName和classloader的区别
- 硬盘安装黑苹果
- 校招经历-java开发面试题
- 【jzoj4888】【最近公共祖先】
- bellman-ford算法
- hdu1102 Constructing Roads(两种基础最小生成树算法)
- Handler、Looper、Message、MessageQune之间的原理
- error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”
- 并查集(Union-Find)算法介绍
- 7.Git代码<仓库基本操作>-4(自我整理) 2016/11/12
- 为什么构造函数不可以被声明为虚函数而析构函数有时候必须声明为虚函数
- Yii2 ajax验证表单输入