首页 > 其他分享 >CF1824B1 LuoTianyi and the Floating Islands (Easy Version) 题解

CF1824B1 LuoTianyi and the Floating Islands (Easy Version) 题解

时间:2024-03-07 13:25:19浏览次数:23  
标签:frac int 题解 LuoTianyi Version ans siz binom 节点

分析

按照 \(k\) 的奇偶分开考虑。

\(k\) 为奇数。一个好的节点有且仅有一个在任意两个有人的节点 \(i,j\) 的路径的交点上的最优位置。若该交点偏移 \(1\) 步,则必然会使路径长度和 \(+1\)。故期望为 \(1\)。

\(k\) 为偶数。任意一个好的节点仍然在任意两个有人的节点 \(i,j\) 的交点上。但若对于某个好点的偏移,在偏移后距离增加与减少的距离均为 \(\frac{k}{2}\) 时,这个点也是好的。考虑枚举边,若一条边的两边有人的点的数量均为 \(\frac{k}{2}\),则这条边有贡献 \(1\)。即每条边的贡献之和为 \(\sum\limits_{u=1}^{n-1} \binom{siz_u}{\frac{k}{2}}\times \binom{n-siz_u}{\frac{k}{2}}\)。其中 \(siz_u\) 为边 \(u\) 左端的节点数量。但是,对于某一条有好点的路径 \(x\),其中的边的数量总会比点的数量少一,所以贡献之和还需要加上 \(\binom{n}{k}\)。所以对于 \(k\) 为偶数时,期望为 \(\frac{\sum\limits_{u=1}^{n-1} \binom{siz_u}{\frac{k}{2}}\times \binom{n-siz_u}{\frac{k}{2}}+\binom{n}{k}}{\binom{n}{k}}\)。

注:求组合数可以先预处理 \(1 \le i \le n\) 的阶乘,在用逆元乘。在 \(siz_u+1 \le \frac{k}{2}\) 的时候,这条边是没有贡献的。

代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define re register
#define il inline

const int N=1e6+10,p=1e9+7;
int n,k;
int ne[N],e[N],h[N],idx;
int sum,siz[N],__[N];

il int qmi(int a,int b){
	int ans=1;
	while(b){
		if(b&1) ans=ans*a%p;
		a=a*a%p,b>>=1;
	}
	return ans;
}
il int C(int n,int m){
	if(n<m) return 0;
	return __[n]%p*qmi(__[m],p-2)%p*qmi(__[n-m],p-2)%p;
}

il void add(int a,int b){ne[++idx]=h[a],e[idx]=b,h[a]=idx;}
il void dfs(int now,int fa){
	siz[now]=1;
	for(re int i=h[now];i;i=ne[i]){
		int j=e[i];if(j==fa) continue;
		dfs(j,now),siz[now]+=siz[j];
	}
	return ;
}
il void dfs2(int now,int fa){
	for(re int i=h[now];i;i=ne[i]){
		int j=e[i];if(j==fa) continue;
		sum=(sum+C(siz[j],k/2)*C(n-siz[j],k/2))%p;
		dfs2(j,now);
	}
	return ;
}

il void solve(){
	cin>>n>>k;
	for(re int i=1,u,v;i<n;++i)
		cin>>u>>v,
		add(u,v),add(v,u);
	if(k&1){cout<<"1\n";return;}
	__[0]=1;for(re int i=1;i<=n+5;++i) __[i]=__[i-1]*i%p;
	sum=C(n,k);
	dfs(1,0),dfs2(1,0);
	cout<<(sum%p*qmi(C(n,k),p-2)%p)%p<<"\n";
	return ;
}

signed main(){
	solve();
	return 0;
}

标签:frac,int,题解,LuoTianyi,Version,ans,siz,binom,节点
From: https://www.cnblogs.com/harmisyz/p/18058673

相关文章

  • 【教程】HBuilderX开发实践:隐私合规检测问题解决方案
    文章目录摘要引言正文1、违规收集个人信息2、APP强制、频繁、过度索取权限知识点补充总结 摘要本篇博客介绍了在使用HBuilderX进行开发过程中,常遇到的隐私合规问题,并提供了相应的解决方案。主要包括违规收集个人信息和APP强制、频繁、过度索取权限两方面。......
  • CF147B 题解
    Solution一道十分典型的dp题。有三个关键点分别是定义状态、优化和答案的统计。首先定义状态,定义\(f_{i,j,p}\)表示\(i\toj\)号节点,共走了不超过\(p\)条边,且是\(i\toj\)的最长路径。不超过\(p\)条边是为了方便转移,而最长路径如果都为负环,说明需要走更多的边,实......
  • P1503 鬼子进村 题解
    分析分块。我们定义\(\mathit{cnt}_i\)表示房子\(i\)是否出现过,\(\mathit{sum}_i\)表示在第\(i\)个块内没有被摧毁的房子数量,维护的房子是\((i-1)\timesS-1\)到\(i\timesS\),其中\(S=\sqrt{n}\)也就是块长。操作\(1\)。写一个栈,根据后进先出的特点,讲摧毁的房子......
  • ARC090E 题解
    Solution一道不错的计数题。因为直接求不相遇的方案十分复杂,所以考虑正难则反,用总的方案数减去相遇的方案数。求方案数很套路:在求最短路的时候开一个数组\(del\)记录到达点\(i\)的最短路条数,更新最短路时顺便更新即可。跑完最短路后,设\(dis1\)为\(s\)到\(t\)的最短路......
  • AT_abc256_h [ABC256Ex] I like Query Problem 题解
    分析用势能线段树。对于一段数字\(a_l\)到\(a_r\),每次全部除以一个大于\(1\)的数,不难发现最多除以\(\logx\)次就会使\(a_l\)到\(a_r\)全部变成\(0\),其中\(x\)是区间最大值。所以,在没有操作\(2\)的情况下,我们可以在每次操作\(1\)的时候都单点修改,只要在某个......
  • CF1070C Cloud Computing 题解
    分析思路不难想,我们对于第\(i\)个计划的时间,可以分成\(l\)和\(r+1\)两部分。用权值线段树维护,在第\(l\)天的时候就将该计划的内容加入权值线段树中,直到过了该计划的时间,也就是第\(r+1\)天,再将这个计划的内容删除。把每一天需要修改的内容存进vector中,修改完查询权值......
  • AT_dwacon5th_prelims_c k-DMC 题解
    分析先考虑\(k=n\)的情况。对于\(s_j=M\)的时候,其能够匹配的\(s_i=D\)的数量很显然是\(i\lej-1\)的时候的数量,求前缀和就能得到。而对于\(s_j=C\)的时候,能够完整匹配的就是\(i\lej-1\)的时候所有\(s_i=M\)能够匹配的数量之和,再套个前缀和就行了。复杂度是\(O......
  • CF1899G Unusual Entertainment 题解
    分析一眼树上启发式合并。定义\(x_i\)为节点\(i\)在序列\(p\)中的下标。则问题转化为:对于每组\(l,r,k\),询问以\(k\)为根的子树中是否有一个以上的节点,满足\(l\lex_j\ler\)。使用set存以\(i\)为根的子树中\(x_j\)的有序排列。则对于每个\(k=i\)的询问,去合......
  • AT_abc328_f [ABC328F] Good Set Query 题解
    分析考虑并查集。对于\(a_i,b_i,d_i\),若\(a_i,b_i\)在之前的满足要求的操作中,\(a_i,b_i\)不在同一个集合里,则在之前\(X_{a_i},X_{b_i}\)的相对差值是可以任意改变的。令\(k=X_{a_i}-X_{b_i}\),则我们需要将\(a_i\)所在集合中所有元素的值增加\(d_i-k\)。然后将\(a_i,b......
  • CF1895D XOR Construction 题解
    分析对于异或,有性质\(a\oplusb=c,a\oplusc=b,a\oplusa=0\)。则对于\(a_i\oplusa_{i+1}\),其表示的结果就是\(b_{i}\oplusb_{i+2}\)。做一个前缀异或和,就能够得到\(b_1\)与\(b_2,b_3,\dots,b_n\)的异或结果。考虑枚举\(b_1\),因为在有解的情况下\(b_1\op......