2023 CCPC 华为云计算挑战赛 hdu7401 流量监控(树形dp)

这篇具有很好参考价值的文章主要介绍了2023 CCPC 华为云计算挑战赛 hdu7401 流量监控(树形dp)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目

流量监控 - HDU 7401 - Virtual Judge

简单来说,T(T<=20)组样例,sumn不超过2e4

每次给定一棵n(n<=2000)个点的树,两问:

①将n个点恰拆成n/2个pair(u,v),要求一个点是另一个点的祖先,求方案数

②若两个pair(u,v)、(w,x)满足:

u是v、w、x的祖先,w是v、x的祖先,v是x的祖先

即,四个点都在x通往根的路径上,且[u,v]和[w,x]相交,则称形成了一个区间交,

在①的所有合法方案数中,求区间交的总数

输出①、②的值,答案对998244353取模

思路来源

jiangly代码&heltion&tiger2005&夏老师

题解

 对着jiangly代码,找了若干人讨论,终于讨论明白了

第一问,dp[i][j]表示i子树内当前有j个未匹配的点的方案数,

转移是一个树上背包,对子树做完树上背包之后,

再考虑u这个点的决策,要么是(,要么是)

换句话说,要么选一个之前未匹配的点进行匹配,要么新增一个未匹配的点

第二问,长度为4的祖先链(都在通往祖先的一条路径上),所以可以考虑把0-4都维护上,

这里实际是考虑每个长度为4的链的贡献,

即在dp的时候并不指定这四个点连的方式,只统计四元组的总方案数,

然后根据题目要求, 最后的时候将13相连、24相连

这相当于求从树上抠掉四个点(四个点在一条祖先链上)时,剩下的点构成合法方案的方案数

f[i][j][k]表示考虑到j的子树,当前抠掉了i个点,还有k个点没有匹配的方案数

相当于一个二维背包,i是一维,k是一维

转移先对u的子树v1、v2、...做背包,做k这一维的背包,

又因为不同子树之间的点并不在一条祖先链上,

所以i这一维做背包两两合并的时候,两棵子树的i这一维不能同时大于0

        rep(a,0,4){
			rep(b,0,4){
				if(a && b)continue;
				rep(i,0,sz[u]){
					rep(j,0,sz[v]){
						add(tmp[a+b][i+j],1ll*f[a][u][i]*f[b][v][j]%mod);
					}
				}
			}
		}

将子树都合并进来之后,再考虑u的决策,

u的决策实际有三种, 要么是(,要么是),要么从树上抠掉文章来源地址https://www.toymoban.com/news/detail-662269.html

代码

#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
typedef double db;
typedef pair<ll,ll> P;
#define fi first
#define se second
#define pb push_back
#define dbg(x) cerr<<(#x)<<":"<<x<<" ";
#define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
#define SZ(a) (int)(a.size())
#define sci(a) scanf("%d",&(a))
#define pt(a) printf("%d",a);
#define pte(a) printf("%d\n",a)
#define ptlle(a) printf("%lld\n",a)
#define debug(...) fprintf(stderr, __VA_ARGS__)
const int N=2e3+10,mod=998244353,inv2=(mod+1)/2;
int T,n,u,v,sz[N],tmp[5][N],f[5][N][N];
vector<int>e[N];
void add(int &x,int y){
	x=(x+y)%mod;
}
void dfs(int u,int fa){
	sz[u]=1;
	f[0][u][0]=1;
	for(auto &v:e[u]){
		if(v==fa)continue;
		dfs(v,u);
		memset(tmp,0,sizeof tmp);
		rep(a,0,4){
			rep(b,0,4){
				if(a && b)continue;
				rep(i,0,sz[u]){
					rep(j,0,sz[v]){
						add(tmp[a+b][i+j],1ll*f[a][u][i]*f[b][v][j]%mod);
					}
				}
			}
		}
		sz[u]+=sz[v];
		rep(a,0,4){
			rep(i,0,sz[u]){
				f[a][u][i]=tmp[a][i];
			}
		}
	}
	memset(tmp,0,sizeof tmp);
	rep(a,0,4){
		rep(i,0,sz[u]){
			if(i)add(tmp[a][i-1],1ll*f[a][u][i]*i%mod);
			add(tmp[a][i+1],f[a][u][i]);
			if(a<4)add(tmp[a+1][i],f[a][u][i]);
		}
	}
	rep(a,0,4){
		rep(i,0,sz[u]){
			f[a][u][i]=tmp[a][i];
		}
	}
}
int main(){
	scanf("%d",&T);
	while(T--){
		sci(n);
		rep(i,1,n){
			e[i].clear();
			sz[i]=0;
		}
		memset(f,0,sizeof f);
		rep(i,2,n){
			sci(u),sci(v);
			e[u].pb(v);
			e[v].pb(u);
		}
		dfs(1,0);
		printf("%d %d\n",f[0][1][0],f[4][1][0]);
	}
	return 0;
}

到了这里,关于2023 CCPC 华为云计算挑战赛 hdu7401 流量监控(树形dp)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023中国高校计算机大数据挑战赛:论文学科分类baseline|清华主办

    NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等 专栏详细介绍:NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性

    2024年02月14日
    浏览(31)
  • 2023年MathorCup高校数学建模挑战赛大数据挑战赛赛题浅析

    比赛时长为期7天的妈杯大数据挑战赛如期开赛,为了帮助大家更好的选题,首先给大家带来赛题浅析,为了方便大家更好的选题。 赛道 A:基于计算机视觉的坑洼道路检测和识别 A题,图像处理类题目。这种题目的难度数模独一档,有图像处理经验的可以尝试。正常并不推荐

    2024年02月08日
    浏览(33)
  • 【2023年MathorCup高校数学建模挑战赛-大数据竞赛】赛道A:基于计算机视觉的坑洼道路检测和识别 python 代码解析

    坑洼道路检测和识别是一种计算机视觉任务,旨在通过数字图像(通常是地表坑洼图像)识别出存在坑洼的道路。这对于地.质勘探、航天科学和自然灾害等领域的研究和应用具有重要意义。例如,它可以帮助在地球轨道上识别坑洼,以及分析和模拟地球表面的形态。 在坑洼

    2024年02月06日
    浏览(40)
  • 2023年MathorCup 高校数学建模挑战赛-A 题 量子计算机在信用评分卡组合优化中的应用-思路详解(模型代码答案)

    运筹优化类题目,不同于目标规划,该题限制了必须使用量子退火算法QUBO来进行建模与求解。本身题目并不难,但是该模型较生僻,给出的参考文献需要耗费大量时间去钻研。建议擅长运筹类题目且建模能力强的队伍选择。 问题 1 :在 100 个信用评分卡中找出 1 张及其对应阈

    2024年02月06日
    浏览(28)
  • 2023mothercup妈妈杯数学建模挑战赛思路

    先占坑,本人于2019年开始接触数学建模,参加了大大小小几十场数学建模比赛。 本次mothercup也会持续陪跑,为大家提供免费的文字思路和视频思路,后续还有代码和参考文章等。 2023年Mathorcup数学建模竞赛A题 (比赛开始后第一时间更新) 2023年Mathorcup数学建模竞赛B题 (比赛

    2023年04月13日
    浏览(41)
  • 【2023 年第十三届 MathorCup 高校数学建模挑战赛】A 题 量子计算机在信用评分卡组合优化中的应用 详细建模过程解析及代码实现

    (1)建模思路 【2023 年第十三届 MathorCup 高校数学建模挑战赛】A 题 量子计算机在信用评分卡组合优化中的应用 详细建模过程解析及代码实现 【2023 年第十三届 MathorCup 高校数学建模挑战赛】 B 题 城市轨道交通列车时刻表优化问题 详细建模方案及代码实现 【2023 年第十三届

    2024年02月06日
    浏览(44)
  • 科兴未来 | 2023年河北国际先进技术创新挑战赛

    为扩大河北省国际科技交流合作,推动我省区域创新合作发展,为河北省培育新兴产业、发展新动能、加强国际化建设提供有力支撑,河北省国际人才交流协会计划于近期组织举办“2023年国际先进技术创新挑战赛”,聚焦我省技术难题,面向国际包新团队征集先进技术,争取

    2024年02月09日
    浏览(31)
  • PolarD&N2023秋季个人挑战赛—Misc全解

    题目信息 压缩包带密码,放到010查看PK头错误,改回去。。 解压后得到 注意文档里还藏有一段文字,在第一页下方,改下颜色就可以看到 base64解码 AES解码,但需要key,从图片获取,根据提示key为长春某地点名称MD5加密 百度识图可知图片上地点是“净月潭”,MD5加密后为:

    2024年02月08日
    浏览(33)
  • 科大讯飞-X光安检图像识别挑战赛2023-测试【1】

    引言: X光安检是目前在城市轨交、铁路、机场、物流业广泛使用的物检手段。使用人工智能技术,辅助一线安检员进行X光安检判图,可以有效降低因为安检员经验、能力或工作状态造成的错漏检问题。在实际场景中,因待检测物品的多样性、成像角度、重叠遮挡等问题,

    2024年02月15日
    浏览(30)
  • 【数据科学赛】2023大模型应用创新挑战赛 #¥10万 #百度

    CompHub  主页增加了 “近两周上新的奖金赛” ,更加方便查找最新比赛,欢迎访问和反馈! 以下内容摘自比赛主页(点击文末 阅读原文 进入) 2023大模型应用创新挑战赛 Baidu AI Studio 指导单位:中共上海市委统战部、浦东新区科技和经济委员会 主办单位:百度飞桨 联合主办

    2024年02月13日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包