摘要:
有n个无聊的人,对于一条长为m(n#includeusing namespace std;int n,m,x,y,v[2000010];int s[2000010>=1) s[x]++;}int fpr(int x){ for(x+=M;x;x>>=1) if((x... 阅读全文
摘要:
有n个无聊的人,对于一条长为m(n#includeusing namespace std;int n,m,x,y,v[2000010];int s[2000010>=1) s[x]++;}int fpr(int x){ for(x+=M;x;x>>=1) if((x... 阅读全文
摘要:
给你一个图,求一个最大边和最小边差值最小的生成树首先我们可以枚举最小边,每次跑一个最小生成树即可但是这样会超时,我们考虑优化采用最优性剪枝,假设我们当前树中的最小边是i,当前边是j,当前最优答案是ans,那么对于所有边k使得Length(j)-Length(k)>An... 阅读全文
摘要:
给你一个图,求一个最大边和最小边差值最小的生成树首先我们可以枚举最小边,每次跑一个最小生成树即可但是这样会超时,我们考虑优化采用最优性剪枝,假设我们当前树中的最小边是i,当前边是j,当前最优答案是ans,那么对于所有边k使得Length(j)-Length(k)>An... 阅读全文
摘要:
题意:给你n个不同的数问你能构成多少个不同的二叉堆显然不能枚举,我们考虑用递推我们令f[i]表示以i为根的二叉堆有多少种令l,r为i的左右儿子,令size[i]为以i为根的堆的大小那么显然,f[i]=f[l]*f[r]*C(size[i]-1,size[l]),因为n... 阅读全文
摘要:
题意:给你n个不同的数问你能构成多少个不同的二叉堆显然不能枚举,我们考虑用递推我们令f[i]表示以i为根的二叉堆有多少种令l,r为i的左右儿子,令size[i]为以i为根的堆的大小那么显然,f[i]=f[l]*f[r]*C(size[i]-1,size[l]),因为n... 阅读全文