栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

AT220E

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

AT220E

题目传送门

思路

对于两点的位置关系分两种情况讨论。

当前点为。

①为点,往下走到达点,显然这个点的贡献就是。

②下面是两个点,设左子树的路径长度为 l ,那么右子树的长度为 d−l,因为长度的分配,有种,因为这两条路径是固定的,所有剩下种方案。

代码

 

#include
using namespace std;
long long n,d,p[2000001],s,l,r,i;
const int P=998244353;
signed main(){
	cin>>n>>d;
	p[0]=1;
	for(i=1;i<=2e6;++i)
		p[i]=p[i-1]*2%P;
	for(i=1;i<=n;++i){
		if(n-i>=d)
			s=(s+p[d]*p[i-1]%P)%P;
		l=min(n-i,d-1);
		r=d-l;
		if(r<=n-i)
			s=(s+(l-r+1)*p[d-2]%P*p[i-1]%P)%P; 
	}
	cout< 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/290356.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号