首页 > 其他分享 >P5904 [POI2014] HOT-Hotels 加强版

P5904 [POI2014] HOT-Hotels 加强版

时间:2023-08-25 16:02:06浏览次数:64  
标签:head 加强版 int cnt son dep HOT dp Hotels

自然的想法是枚举共同的交点,然后进行换根 dp,复杂度可以做到 \(\mathcal O(n^2)\),可以通过简单版,但是显然过不了 \(10^5\) 的数据,考虑进行优化。

image.png

记 \((x,y,z)\) 为满足要求的点,即满足 \(a=b+c\),树形 dp 原则是子树内的信息无后效性,尽量把子树内的信息合并在一起。所以 \(a-b=c\),在这个等式种,\(a-b\) 和 \(c\) 在以 \(2\) 为根的两棵不同子树,所以转变统计方式,在 \(2\) 号统计答案。

设计状态 \(g_{i,j}\) 表示 \(i\) 子树内部满足 \(a-b=j\) 的点对数量,因为要统计 \(z\) 的数量,所以设 \(f_{i,j}\) 表示 \(i\) 子树内和 \(i\) 距离为 \(j\) 的点的个数。

状态明确了,方程是容易设计的:

\[\begin{aligned} f_{i,j}&=\sum_{u \in son_i}f_{u,j-1} \\ g_{i,j}&=\sum_{u \in son_i}g_{u,j+1}+f_{i,j}\times f_{u,j-1}\\ ans&=\sum_{u \in son_i}f_{i,j-1}\times g_{u,j}+g_{i,j}\times f_{u,j-1} \end{aligned} \]

直接 dp 复杂度仍然是 \(\mathcal O(n^2)\) 的,但是发现状态中 \(j\) 只和深度有关,考虑使用长链剖分优化 dp。

观察方程,当只有一个儿子 \(u\) 时,可以简化为:

\[\begin{aligned} f_{i,j}&=f_{u,j-1} \\ g_{i,j}&=g_{u,j+1} \\ ans&=g_{i,0} \end{aligned} \]

可以先对重儿子进行 dp,重儿子的 dp 值平移一下直接给父亲用,具体实现使用指针,详见代码。

int n,head[100005],dep[100005],to[200005],son[100001],nex[200001],a[100001],cnt;
ll ans,*g[100005],*f[100005],p[400050],*o=p;
inline void add(int x,int y){to[++cnt]=y,nex[cnt]=head[x],head[x]=cnt;}
void dfs1(int k,int fa)
{
	dep[k]=1;
	for(int i=head[k];i;i=nex[i])
	{
		if(to[i]==fa)continue;
		dfs1(to[i],k);
		if(dep[to[i]]+1>dep[k])dep[k]=dep[to[i]]+1,son[k]=to[i];
	}
}
void dfs(int k,int fa)
{
	if(son[k])f[son[k]]=f[k]+1,g[son[k]]=g[k]-1,dfs(son[k],k);
	f[k][0]=1,ans+=g[k][0];
	for(int i=head[k];i;i=nex[i])
	{
		if(to[i]==fa||to[i]==son[k])continue;
		f[to[i]]=o,o+=dep[to[i]]<<1,g[to[i]]=o,o+=dep[to[i]]<<1,dfs(to[i],k);
		for(int j=0;j<dep[to[i]];++j)
		{
			if(j)ans+=f[k][j-1]*g[to[i]][j];
			ans+=g[k][j+1]*f[to[i]][j];
		}
		for(int j=0;j<dep[to[i]];++j)
		g[k][j+1]+=f[k][j+1]*f[to[i]][j],
		f[k][j+1]+=f[to[i]][j],
		g[k][j]+=g[to[i]][j+1];
	}
}
inline void mian()
{
	read(n);int x,y;
	for(int i=1;i<n;++i)read(x,y),add(x,y),add(y,x);
	dfs1(1,0),f[1]=o,o+=dep[1]<<1,g[1]=o,o+=dep[1]<<1,dfs(1,0),write(ans);
}

标签:head,加强版,int,cnt,son,dep,HOT,dp,Hotels
From: https://www.cnblogs.com/WrongAnswer90-home/p/17657153.html

相关文章

  • Adobe Photoshop 2023 Beta爱国完美解锁版安装教程!内置Ai创意填充绘图!
    AdobePhotoshop2023Beta爱国完美解锁版安装教程!内置Ai创意填充绘图!Photoshop是由Adobe开发的全球知名的图像编辑和设计软件。它是专业设计师、摄影师和艺术家们首选的工具之一,用于创建、编辑和增强照片、插图和图形。Photoshop具有丰富的功能和强大的工具集,可满足各种创意和设计......
  • P6604 [HNOI2016] 序列 加强版
    链接:P6604[HNOI2016]序列加强版首先,像这种题可以转化为计算贡献,即计算每一个元素成为最小值的次数。这个次数怎么求呢?显然单调栈模板,对于每一个数计算左边和右边第一个比它小的数\(l[i]\)和\(r[i]\)。CODE1:for(inti=1;i<=n;i++){ while(k&&a[i]<a[sta[k]]){ k--; ......
  • 20天 hot 100 速通计划-day16
    堆295.数据流的中位数中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。例如arr=[2,3,4]的中位数是3。例如arr=[2,3]的中位数是(2+3)/2=2.5。实现MedianFinder类:MedianFinder()初始化MedianFinder......
  • 论文解读(MetaAdapt)《MetaAdapt: Domain Adaptive Few-Shot Misinformation Detection
    Note:[wechat:Y466551|可加勿骚扰,付费咨询]论文信息论文标题:MetaAdapt:DomainAdaptiveFew-ShotMisinformationDetectionvia MetaLearning论文作者:ZhenruiYue、HuiminZeng、YangZhang、LanyuShang、DongWang论文来源:2023ACL论文地址:download 论文代码:download......
  • 20天 hot 100 速通计划-day15
    栈394.字符串解码给定一个经过编码的字符串,返回它解码后的字符串。编码规则为:k[encoded_string],表示其中方括号内部的encoded_string正好重复k次。注意k保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。......
  • 20天 hot 100 速通计划-day14
    二分查找33.搜索旋转排序数组整数数组nums按升序排列,数组中的值互不相同。在传递给函数之前,nums在预先未知的某个下标k(0<=k<nums.length)上进行了旋转,使数组变为[nums[k],nums[k+1],...,nums[n-1],nums[0],nums[1],...,nums[k-1]](下标从0开始计数)。例如......
  • Prompt-“设计提示模板:用更少数据实现预训练模型的卓越表现,助力Few-Shot和Zero-Shot任
    Prompt-“设计提示模板:用更少数据实现预训练模型的卓越表现,助力Few-Shot和Zero-Shot任务”通过设计提示(prompt)模板,实现使用更少量的数据在预训练模型(PretrainedModel)上得到更好的效果,多用于:Few-Shot,Zero-Shot等任务。1.背景介绍prompt是当前NLP中研究小样本学习方向上非常......
  • 采用增强型 HotRod™封装 LMQ66420MC3RXBRQ1、LMR36503MSC5RPERQ1 汽车类降压转换器
    一、LMQ66420MC3RXBRQ1器件介绍:LMQ66420-Q1是具有集成旁路和自举电容器的业界超小型36V、2A同步直流/直流降压转换器,采用增强型HotRod™QFN封装。该易于使用的转换器支持1V(3.3V)至36V的宽输入电压范围(启动后或运行后),并支持高达42V的瞬态电压。该器件专为满足常开型汽车应......
  • 20天 hot 100 速通计划-day13
    回溯131.分割回文串给你一个字符串s,请你将s分割成一些子串,使每个子串都是回文串。返回s所有可能的分割方案。回文串是正着读和反着读都一样的字符串。示例1:输入:s="aab"输出:[["a","a","b"],["aa","b"]]示例2:输入:s="a"输出:[["a"]]提示:1&......
  • 与Photoshop协同创作
    这个球涉及到很多的光影关系,用AE就不能升任了选择HDTV创建先画一个球,然后用画笔改不透明度,画黄色有颜色溢出右击创建剪切蒙版颜色就进去了做一次高斯模糊把背景删掉,存储为psd就好了把我们做好的psd丢到pr里面作为素材......