P3565 [POI2014] HOT-Hotels

news2024/11/19 13:15:18

      ~~~~~      P3565 [POI2014] HOT-Hotels       ~~~~~      总题单链接

      ~~~~~       2024.9.10:DP方程有问题,已修改,同时更新了长链剖分优化版本。

思路

      ~~~~~       g [ u ] [ i ] g[u][i] g[u][i] 表示在 u u u 的子树内,距离 u u u i i i 的点的个数。

      ~~~~~       d p [ u ] [ i ] dp[u][i] dp[u][i] 表示: u u u 的子树内存在两个点 x , y x,y x,y,设 d i s ( x , l c a ) = d i s ( y , l c a ) = d dis(x,lca)=dis(y,lca)=d dis(x,lca)=dis(y,lca)=d d i s ( l c a , u ) = k dis(lca,u)=k dis(lca,u)=k i = d − k i=d-k i=dk。举个栗子:


      ~~~~~      上图中 d p [ 1 ] [ 1 ] = 3 dp[1][1]=3 dp[1][1]=3({x=4,y=5},{x=4,y=8},{x=6,y=8})。

      ~~~~~      对于每个 u u u

      ~~~~~       a n s = a n s + d p [ u ] [ 0 ] ans=ans+dp[u][0] ans=ans+dp[u][0]

      ~~~~~       a n s = a n s + ∑ x , y ∈ s o n ( u ) , x ! = y d p [ x ] [ j + 1 ] ∗ g [ y ] [ j − 1 ] ans=ans+\sum_{x,y\in son(u),x!=y}dp[x][j+1]*g[y][j-1] ans=ans+x,yson(u),x!=ydp[x][j+1]g[y][j1],为什么是 j + 1 j+1 j+1 j − 1 j-1 j1?因为 u u u y y y 已经补了两个,不懂的同学可以画个图看一下。

      ~~~~~       d p [ u ] [ i ] = d p [ u ] [ i ] + g [ x ] [ i − 1 ] ∗ g [ y ] [ i − 1 ] dp[u][i] =dp[u][i]+g[x][i-1]*g[y][i-1] dp[u][i]=dp[u][i]+g[x][i1]g[y][i1],这是 k = 0 k=0 k=0 的情况。

      ~~~~~       d p [ u ] [ i ] = d p [ u ] [ i ] + d p [ v ] [ i + 1 ] dp[u][i]=dp[u][i]+dp[v][i+1] dp[u][i]=dp[u][i]+dp[v][i+1]

      ~~~~~      以上公式可以用前缀和做到 O ( N ) O(N) O(N) 转移。

      ~~~~~      时间复杂度 O ( N 2 ) O(N^2) O(N2),空间复杂度 O ( N 2 ) O(N^2) O(N2),理论可以有 100 100 100 分,但我只有 90 90 90 分。

      ~~~~~      发现这道题可以用长链剖分将时间复杂度优化至 O ( N ) O(N) O(N),但这个以后再将。

代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n;ll ans;vector<int>eg[5002];
int f[5002][5002],g[5002][5002];
inline void dfs(int fa,int p)
{
	f[p][0]=1;
	for(int v:eg[p]) {
		if(v==fa)continue;
		dfs(p,v);
		for(int i=0;i<=n;i++)ans+=g[p][i]*(i==0?0:f[v][i-1])+g[v][i+1]*f[p][i];
		for(int i=0;i<=n;i++)g[p][i]+=f[p][i]*(i==0?0:f[v][i-1])+g[v][i+1];
		for(int i=1;i<=n;i++)f[p][i]+=f[v][i-1];
	}
}
signed main(){
	
	cin>>n;
	for(int i=1;i<n;i++) {
		int u,v;cin>>u>>v;
		eg[u].push_back(v);
		eg[v].push_back(u);
	}
	
	dfs(0,1);
	cout<<ans;
	
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2132668.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

了解国产光耦合器的核心功能和应用

光耦合器或光隔离器是现代电子产品中的关键组件&#xff0c;它能够在没有电接触的情况下在系统的不同部分之间安全地传输信号。这是通过基于光的信号传输来实现的&#xff0c;它可以隔离电路&#xff0c;防止高压损坏敏感元件。近年来&#xff0c;国产光耦合器取得了重大进展&a…

孙怡带你深度学习(1)--神经网络

文章目录 深度学习神经网络1. 感知器2. 多层感知器偏置 3. 神经网络的构造4. 模型训练损失函数 总结 深度学习 深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向。 从上方的内容包含结果&#xff0c;我们可以知道&#xff0c;在学习深度学…

OpenHarmony鸿蒙开发( Beta5.0)智能油烟机开发实践

样例简介 本Demo是基于Hi3516开发板&#xff0c;使用开源OpenHarmony开发的应用。本应用主要功能有&#xff1a; 可以搜索本地指定目录的图片和视频文件&#xff0c;并可进行点击播放。 可以通过wifi接收来自手机的美食图片以及菜谱视频&#xff0c;让我们对美食可以边学边做…

昨晚,OpenAI震撼发布o1大模型!我们正式迈入了下一个时代。

大半夜的&#xff0c;OpenAI抽象了整整快半年的新模型。 在没有任何预告下&#xff0c;正式登场。 正式版名称不叫草莓&#xff0c;草莓只是内部的一个代号。他们的正式名字&#xff0c;叫&#xff1a; 为什么取名叫o1&#xff0c;OpenAI是这么说的&#xff1a; For complex …

TCP核心机制

TCP基本特点&#xff1a;有连接&#xff0c;面向字节流&#xff0c;全双工&#xff0c;可靠传输(TCP最核心的机制) 核心机制一(确认应答): 在网络中&#xff0c;可能我们传输的消息会因为诸多原因导致发送到对方手中的顺序不一样&#xff0c;举个例子&#xff1a; 在这张图中…

【鸿蒙开发从0到1 支付宝界面布局实现day11】

鸿蒙开发案例-支付宝界面 一.布局思路二.页面搭建1.整体stack布局底部的tab2.主体区域的架子:头部主体界面(层叠关系,主题页面可以滚动)3.给主体内容填内容(1).完成快捷导航(2)服务导航 4.装饰图片 三.整体效果展示1.效果展示2.完整代码演示 四.总结 一.布局思路 整体stack布局…

成型的程序

加一个提示信息 加上python 常用的包 整个程序打包完 250M 安装 960MB matplot numpy pandas scapy pysearial 常用的包 (pyvisa)… … 啥都有 Python 解释器组件构建 要比 lua 容易的多 &#xff08;C/Rust 的组件库)

Vue3 父组件向子组件传值:异步数据处理的显示问题

一、问题场景 假设我们有一个父组件和一个子组件&#xff0c;父组件需要经过一些复杂的计算或者异步操作才能得到要传递给子组件的值。在数据还没有准备好的时候&#xff0c;子组件尝试获取并显示这个值&#xff0c;这就可能导致子组件没有数据可显示或者显示了一个不正确的初…

简单有趣的python小程序(涵源代码)

目录 tkinter 计算器 2.计算题练习 猜数字 烦人的程序 无法拒绝的请假条。。。 爬虫 你想看豆瓣评分前十的电影? WXpython 记事本&#xff08;可保存&#xff09;​编辑 数字逻辑 解方程 tkinter 计算器 import tkinter as tk import tkinter.messagebox as mroot…

使用ChatGPT撰写论文,一定要掌握加强理论深度的八个策略!

大家好,感谢关注。我是七哥,一个在高校里不务正业,折腾学术科研AI实操的学术人。关于使用ChatGPT等AI学术科研的相关问题可以和作者多多交流,相互成就,共同进步,为大家带来最酷最有效的智能AI学术科研写作攻略。 在学术论文的写作中,加强论文的理论深度是非常重要的一个…

nacos明明配置了远程连接地址却一直连接本地的详细配置解释

大家时间都很珍贵&#xff0c;我直接把方法放这 这个是yml文件&#xff0c;我们配置yml文件的时候&#xff0c;一定要把他的服务发现地址写了 这里是针对bootstrap做出的文件&#xff0c;注意名字&#xff0c;要和我们在yml文件里面的spring名字一样 yml discovery:是发现的意…

C到C++入门基础知识

一&#xff1a;命名空间&#xff1a;namespace &#xff08;一&#xff09;&#xff1a;命名空间的定义 注&#xff1a;命名空间只能定义在全局&#xff0c;不能定义在函数内部。 &#xff08;1&#xff09;类似于C语言的结构体&#xff0c;C语言的命名空间定义为&#xff1…

Java Enterprise System 体系结构

本章概述了 Java Enterprise System 部署所基于的体系结构概念。 章中描述了一个框架,在此框架内从三维角度对 Java Enterprise System部署体系结构进行了分析,它们分别是:逻辑层、基础结构服务级别和服务质量。这三维在下图中以图解形式显示为正交坐标轴,它们有助于在体系…

Word使用手册

修改样式 编辑word文档时&#xff0c;标题和正文文本通常有不同的格式&#xff0c;如果能将这些格式保存为样式&#xff0c;下一次就能直接调用样式&#xff0c;而不需要重复手动设置格式。 可以将样式通常保存为不同的 样式模板.docx&#xff0c;要调用不同样式集&#xff0…

看Threejs好玩示例,学习创新与技术

我把在一些好玩的ThreeJS的效果&#xff0c;认真分析技术&#xff0c;写成博客&#xff0c;欢迎大家去看。 后面慢慢补充。 看Threejs好玩示例&#xff0c;学习创新与技术(一)https://mp.weixin.qq.com/s/eJeGmnla0D4zEMl4AwFsVw

波克城市 x NebulaGraph|高效数据血缘系统在游戏领域的构建实战

关于波克城市和作者‍‍ 波克城市&#xff0c;一家专注于研发精品休闲游戏的全球化公司&#xff0c;连续七年入选中国互联网综合实力百强&#xff0c;2023 年位列 17 位。波克城市旗下拥有《捕鱼达人》《猫咪公寓2》等精品休闲游戏&#xff0c;全球注册用户超 5 亿&#xff0c;…

AB 1756-L62 与 AB 5069 通过串口通信

PLC AB L62 控制器 插槽2 Path, RS232=2, 3 PLC Compactlogix 5069-SERIAL 配置

【提示词】浅谈GPT等大模型中的Prompt

Prompt是人工智能&#xff08;AI&#xff09;提示词&#xff0c;是一种利用自然语言来指导或激发人工智能模型完成特定任务的方法。在AI语境中&#xff0c;Prompt是一种自然语言输入&#xff0c;通常指的是向模型提出的一个请求或问题&#xff0c;这个请求或问题的形式和内容会…

【QT】系统-上

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;QT 目录 &#x1f449;&#x1f3fb;事件QWidget中常见的事件 &#x1f449;&#x1f3fb;处理鼠标事件&#xff1a;leaveEvent和enterEvent&#x1f449;&a…

epoll接口使用 -- 非阻塞式网络io(仅读事件)

目录 epoll接口使用 思路 注意点 代码 封装epoll接口 epoll.sever.hpp 运行结果 epoll接口使用 接口epoll原理介绍 -- epoll接口介绍,epoll模型介绍原理,接口和模型的关系,epoll优点(和select/poll进行对比)-CSDN博客 思路 我们可以先将系统提供的epoll简单封装一下…