当前位置: 首页 > news >正文

北京网站建设设计南阳网站建设哪家好

北京网站建设设计,南阳网站建设哪家好,网站页脚导航,微管家平台https://atcoder.jp/contests/arc165/tasks/arc165_e 考虑一个常见套路,我们对每个连通块统计其概率,设为 p ( T ) p(T) p(T),则答案为 ∑ ∣ T ∣ > k p ( T ) \sum_{|T|>k} p(T) ∣T∣>k∑​p(T) 可以想成对于每个大小大于 k …

https://atcoder.jp/contests/arc165/tasks/arc165_e

考虑一个常见套路,我们对每个连通块统计其概率,设为 p ( T ) p(T) p(T),则答案为

∑ ∣ T ∣ > k p ( T ) \sum_{|T|>k} p(T) T>kp(T)

可以想成对于每个大小大于 k k k 的连通块,都要至少选一个点,也就是进行一次操作。所以我们就统计所以这么大的连通块存在的概率,乘上1,就是其期望。总期望就是单独的期望之和。

然后一些显然的性质,一个连通块必然是树上的一个子树弄走它的一堆子树。而且要形成这样一个连通块,连通块内的点一定没有被选,而且和连通块相邻的所有点一定全部被选过。

那么我们现在就发现决定一个连通块贡献的性质。有了这个性质,我们就可以合并等价类了。

在合并之前,我们先考虑 n n n 个点的块, m m m 个点相连的概率。这 m m m 个点必然早于这 n n n 个点先被选。

但我们发现操作的先后可能影响一个点是否被选。

有一种常见套路,就是我们直接枚举操作顺序,这个操作顺序代表中如果某个点所在连通块大小小于等于 k k k,我们可以视为跳过这个操作。所以对于任意 n n n 个点的操作方案为 n ! n! n!

所以 n n n 个点的块, m m m 个点相连的概率为 n ! m ! ( n + m ) ! \frac{n!m!}{(n+m)!} (n+m)!n!m!

这一步也可以操作官方题解的转化来理解:

在这里插入图片描述

然后回到前面那个问题,如何计算合法 ( n , m ) (n,m) (n,m) 对呢?

因为这是一棵树,直接树形dp就行。数据范围就100,暴力转移即可。

复杂度 O ( n 4 ) O(n^4) O(n4)

#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read(){int x=0,f=1;char ch=getchar(); while(ch<'0'||
ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x*f;}
#define Z(x) (x)*(x)
#define pb push_back
//mt19937 rand(time(0));
//mt19937_64 rand(time(0));
//srand(time(0));
#define N 210
//#define M
#define mo 998244353
int pw(int a, int b) {int ans=1; while(b) {if(b&1) ans*=a; b>>=1; a*=a; ans%=mo; a%=mo; }return ans; 
}
int n, m, i, j, k, T;
int dp[N][N][N], f[N][N], w[N]; 
int u, v, x, fac[N], inv[N], ans; 
vector<int>G[N]; void Mod(int &a) {a=(a%mo+mo)%mo; 
}void dfs(int x, int fa) {dp[x][1][0]=w[x]=1; int a, b, c, d; for(int y : G[x]) {if(y==fa) continue; dfs(y, x); for(a=0; a<=w[x]+w[y]; ++a)for(b=0; b<=w[x]+w[y]; ++b) f[a][b]=dp[x][a][b], dp[x][a][b]=0; for(a=0; a<=w[x]; ++a)for(b=0; b<=w[x]; ++b)  {dp[x][a][b+1]+=f[a][b]; Mod(dp[x][a][b+1]); for(c=0; c<=w[y]; ++c)for(d=0; d<=w[y]; ++d) {dp[x][a+c][b+d]+=f[a][b]*dp[y][c][d]%mo; Mod(dp[x][a+c][b+d]); }}w[x]+=w[y]; }
}signed main()
{
//	freopen("in.txt", "r", stdin);
//	freopen("out.txt", "w", stdout);
//	T=read();
//	while(T--) {
//
//	}n=read(); m=read(); for(i=fac[0]=1; i<=2*n+5; ++i) fac[i]=fac[i-1]*i%mo; inv[2*n+5]=pw(fac[2*n+5], mo-2); for(i=2*n+4; i>=0; --i) inv[i]=inv[i+1]*(i+1)%mo; for(i=1; i<n; ++i) {u=read(); v=read(); G[u].pb(v); G[v].pb(u); }dfs(1, 0); for(x=1; x<=n; ++x) for(i=m+1; i<=n; ++i)for(j=0; j<=n; ++j) {u=i; v=j+(x!=1); if(dp[x][i][j])ans+=fac[u]*fac[v]%mo*inv[u+v]%mo*dp[x][i][j]%mo; Mod(ans); }printf("%lld", ans); return 0;
}
http://www.dtcms.com/a/424321.html

相关文章:

  • 大模型原理与实践:第一章-NLP基础概念完整指南_第1部分-概念和发展历史
  • 国企门户网站建设方案电子商务网站策划方案
  • 【Linux】cgdb调试工具的使用
  • 南京建设网站要多少钱线上推广活动
  • 做网站专题页需要注意什么app制作开发报价
  • iTerm2使用Shell Integration优雅地实现单个文件上传与下载
  • 怎样做网站漂浮精通网站开发
  • 西安网站制作sxyun昆明网站建设公司哪家好
  • 突破NER性能瓶颈:BERT与LLM协同的混合架构实践
  • 网站建设与管理课件seo排名优化联系13火星软件
  • 网站做前端去国外做外卖网站
  • 分布式任务事务框架设计与实现方案
  • 漳州 网站建设多少钱成都旅游攻略景点必去
  • pytorch基本运算-torch.normal()函数生成的随机数据添加噪声
  • 通辽建设工程网站网上做效果图网站有哪些
  • DragonBalls_One013
  • 湖南网站建设哪家有定制软件如何收费
  • 专门做招商的网站是什么wordpress两栏
  • 七彩喜艾灸机器人:传统技艺与AI的共生共舞
  • svn: E200009
  • SVN 主分支合并之通过主分支合并子分支操作流程
  • 个人做美食视频网站本地网站地图生成器
  • 长沙的企业网站建设网站上线详细步骤
  • CY3-草氨酸的化学研究中的应用
  • 哪家公司建站比较好建筑英才招聘网
  • 优时代网站建设数据型网站 建设方案
  • java后端工程师进修ing(研一版‖day50)
  • 正常成都建设网站组织建设情况怎么写
  • 网站建设与管理模拟题1镇江网站建设公司
  • 百度网站统计添加网址苏州知名网站建设建站公司