首页 > 其他分享 >[十二省联考 2019] 希望

[十二省联考 2019] 希望

时间:2024-02-27 18:11:55浏览次数:16  
标签:right 联通 int ll 十二 times fa 2019 联考

\(\mathbb{P} \text{art} \ 1 \ \ 36 \ \text{pts}\) :

首先由于所以联通块都包括一个点,我们可以考虑每个点对答案的贡献,即求一个点所在联通块的数量。

因为这样做会重复,所以我们用边点容斥来去重即 \(V = E +1\),点的答案减去边的答案就是方案数,边的答案是对于一条边其两个端点都合法的方案数。

我们设计 \(f_{u,x}\),\(g_{u,x}\) 分别表示点 \(i\) 的子树包括 \(i\) 中距离 \(\le x\) 的联通块方案数,点 \(i\) 向上走包括 \(i\) 距离 \(\le x\) 的联通块方案数。

转移:

\[f_{u,x} = \prod_{v \in son_u} f_{v,x-1} \]

\[g_{u,x}=\left ( g_{fa_u,x-1} \prod_{v \in son_{fa_u},v \ne u} f_{v,x-2} \right ) +1 = \left ( g_{fa_u,x-1} \times \frac{f_{u,x-1}}{f_{v,x-2}} \right ) +1 \]

答案:

\[ans \gets \sum_{i \in V} \left ( f_{i,L} \times g_{i,L}\right )^k - \sum_{fa_i \in V} (f_{i,L-1} \times (g_{i,L}-1))^k \]


#include<bits/stdc++.h>

const int N=2e5+50;
const int M=998244353;
typedef long long ll;
using namespace std;

int n, L, k;
vector<int>e[N];
vector<ll> f[N],g[N];

ll inv(ll a,int p){
	ll as=1;
	while(p){
		if(p&1)as=(as*a)%M;
		a=(a*a)%M;
		p>>=1;
	}
	return as;
}

void dp(int u,int fa){
	int cnt = 0;
	for(auto v:e[u]){
		if(v==fa)continue;
		dp(v,u);
		cnt++;
		for(int i=1;i<=L;++i){
			f[u][i]=(f[u][i]*(f[v][i-1]+1))%M;
		}
	}
	
}

ll ans=0;
void cx(int u,int fa){
	ans=(ans+inv(f[u][L]*g[u][L]%M,k))%M;
	if(fa) ans=(ans-inv(f[u][L-1]*(g[u][L]-1)%M,k)+M)%M;
	for(auto v:e[u]){
		if(v==fa)continue;
		for(int i=1;i<=L;++i){
			ll rs;
			if(i > 1) rs=inv(f[v][i-2]+1,M-2);
			else rs = 1;
			g[v][i]=g[u][i-1]*f[u][i-1]%M*rs%M + 1;
		}
		cx(v,u);
	}
}
int main(){
	cin >> n >> L >> k;
	for(int i=1;i<n;++i){
		int u,v;
		cin>>u>>v;
		e[u].push_back(v);
		e[v].push_back(u);
	}
	for(int i=1;i<=n;++i) g[i].resize(L+1,1),f[i].resize(L+1,1);
	dp(1,0);
	cx(1,0);
	cout<<ans;
	return 0;
}

标签:right,联通,int,ll,十二,times,fa,2019,联考
From: https://www.cnblogs.com/Saka-Noa/p/18037501

相关文章

  • VS2019自带的增强型指令集和自我优化的版本速度比较.
    去年年底把工程项目由VS的2015升级到2019版本,本以为直接配置下运行环境就可以了,但是一编译发现一大堆错误,所有的错误都指向一系列的指令集,比如_mm_exp_ps、_mm_log_ps、_mm_pow_ps等等,后面发现原来从2019版本开始,编译器已经自带了这些常用的函数,所以自己函数和系统的重名了,也......
  • 《程序是怎样跑起来的》第十二章观后感
    我是计应232的学生张凯源,今天来分享《程序是怎样跑起来的》第十二章观后感。最后一章讲了让计算机“思考”,计算机是机器,它本身是肯定不会思考的,但是程序员敲的代码可以让它像是在“思考”。计算机中的程序使用目的可以分为两类:一类是大家作为工具来使用的程序,例如文字处理程序。......
  • ssts-hospital-web-master项目实战记录三十二:项目迁移-Vue项目Hook和插件的区别
    记录时间:2024-02-27一、准备工作【使用“文心一言”搜索】Vue3中的Hook(如setup、onMounted、onUpdated等)具体是如何工作的?它们与组件的生命周期有何关联?Vue3引入了CompositionAPI,这是一种新的、可选的方式来组织和重用Vue组件的逻辑。在CompositionAPI中,Hook(如setup、onMo......
  • 《程序是怎样跑起来的》第十二章读后感
    阅读关于计算机模拟、伪随机数生成、计算机是否具备思考功能和记忆功能以及人工智能(AI)的内容后,我对计算机科学和人工智能领域的多个方面有了深入的思考。首先,了解到计算机通过公式生成伪随机数的方法让我认识到所谓的“随机”在计算机中实际上是通过算法和初始条件生成的伪随机数......
  • 《程序是怎样跑起来的》第十二章读后感
    程序的使用目的:大致可以划分为作为工具与代替执行人类思考两类工具类:如文字处理器,excel等程序主要用于作为工具提升工作效率代替人类思考类:如微计算机控制电饭煲,根据米和水的分量自动调节火的大小与加热时间常见用程序表示人类的思考方式:随机性,用于模仿人思考的随意性,没有......
  • 程序是怎样跑起来的第十二章读后感
    读完《程序是怎样跑起来的》第十二章后,我对程序的性能优化有了更深刻的理解。这一章主要介绍了程序性能优化的方法和技巧,让我认识到了性能优化对于提升程序效率和用户体验的重要性。在这一章中,我学到了性能优化的多个方面,包括算法和数据结构的优化、代码优化、多线程和并发处理等......
  • 程序是怎么跑起来的读后感十二
    《程序是怎样跑起来的》第十二章读后感第十二章《程序是怎样跑起来的》继续深入探讨了计算机程序运行的内部机制,特别是关于程序如何与计算机的各个硬件组件进行交互。读完这一章后,我对计算机的基本构成和运行原理有了更全面的理解。首先,作者通过介绍计算机的基本构成,如CPU、内存......
  • 《程序是怎样跑起来的》——第十二章读后感
    一:1.在机器学习中,我们使用学习程序让计算机读取大量数据并根密数据特征自己进行学。2.本章中,笔者会介绍于写数字识别这个分类问题的实例。具体来说就是对于写数字图像数据进行识别,并将其分类为数字0~9。3.本章中,针对手写数字识别问题,我们会使用支持向量机算法。4.本章中,我们会......
  • 《程序是怎样跑起来的》第十二章读后感
    在阅读《程序是怎样跑起来的》这本书的第十二章后,我对项目管理和团队协作有了更深入的理解。这一章强调了良好的项目管理对于软件项目成功的重要性,并提供了实用的团队协作建议。作者首先介绍了项目管理的基本概念和框架,包括项目规划、进度控制和风险管理等。我明白了项目管理的目......
  • 《程序是怎样跑起来的》读后感——第十二章
    在读完了本章,此书也已经快到末尾了,这个章节让我们可以了解到从前觉得很神秘的东西:程序就如同是由计算机执行的各种指令罗列起来的文章。在计算机内部的CPU,通过对该文章的内容进行解析和运行,来控制连接到计算机的各种外围设备。具体来说,控制就是指CPU和各种设备之间配合进行数......