首页 > 其他分享 >学换根dp有感(学习笔记)

学换根dp有感(学习笔记)

时间:2024-09-20 12:26:03浏览次数:1  
标签:val 有感 int ll 笔记 学换 vv dp

自从钻研这换根DP,犹如梁山好汉破了难关。初时只觉这树状结构,分枝繁复,变化多端,哪知竟有此等妙计。每换一根,便能高效算出新解,岂不似宋江指挥众兄弟,调度得当,事半功倍。更妙的是,这容斥之法,恰如兵法计策,分而治之,避开冗余。学之愈深,愈觉精妙,心中豪气顿生,恨不得与众学者痛饮一场,论此技之神通。

感觉这换根dp真的很有意思,也好理解学习(巧的是学之前还做了类似的题目换根

详细见例题洛谷 P3478 [POI2008] STA-Station

换根dp 其实就是容斥和树形dp的结合。

感觉非常之妙。

学习笔记

学习笔记

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e6+10;
int n;
ll siz[N];
ll val[N];
ll ans[N];
vector<int> v[N];

void dfs(int u,int fa){
	siz[u]=1;
	val[u]=val[fa]+1;
	for(int i=0;i<v[u].size();i++){
		int y=v[u][i];
		if(y==fa){
			continue;
		} 
		dfs(y,u);
		siz[u]+=siz[y];
	}
}

void dfs2(int u,int fa){
	for(int i=0;i<v[u].size();i++){
		int y=v[u][i];
		if(y==fa){
			continue;
		} 
		ans[y]=ans[u]+siz[1]-2*siz[y]; 
		dfs2(y,u);
	}
}

int main(){
	ios::sync_with_stdio(false);
	cin>>n;
	
	for(int i=1;i<n;i++){
		int u,vv;
		cin>>u>>vv;
		v[u].push_back(vv);
		v[vv].push_back(u);
	}
	dfs(1,0);
	for(int i=1;i<=n;i++){
		ans[1]+=val[i];
	}
	dfs2(1,0);
	ll mx=-1,id=1;
	for(int i=1;i<=n;i++){
		if(ans[i]>mx){
			mx=ans[i];
			id=i;
		}
	}
	cout<<id;
	return 0;
}

标签:val,有感,int,ll,笔记,学换,vv,dp
From: https://www.cnblogs.com/sadlin/p/18422278

相关文章

  • WPF behavior InvokeCommandAction CommadParameter pass selectedItem of currentcon
    <ListBoxx:Name="lbx"SelectedIndex="0"ItemsSource="{BindingBooksCollection,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"VirtualizingPanel.IsContainerVirtualizable="True"......
  • WPF behavior InvokeCommandAction CommandParameter
    <ListBoxx:Name="lbx"SelectedIndex="0"ItemsSource="{BindingBooksCollection,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"VirtualizingPanel.IsContainerVirtualizable="True"......
  • Flutter局域网广播(UDP通信)与TCP通信
    前言现在有一个需求,手机和ESP32通过WIFI进行通信。流程如下:手机创建TCP服务器手机向192.168.0.255的1002端口广播自己的ip地址以及TCP服务器的端口号ESP32监听到1002的广播内容后,连接手机的TCP服务器。最后就是ESP32硬件和TCP服务器进行数据收发因此我们要了解Flutter如何使......
  • 在WordPress中最佳Elementor主题推荐:专家级指南
    对于已经在WordPress和Elementor上有丰富经验的用户来说,选择功能强大且高度灵活的主题,能大大提升网站的表现和定制能力。今天,我们来介绍六款适合用户的专家级Elementor主题:Sydney、Blocksy、RifeFree、Customify、Deep和Layers。这些主题不仅功能丰富,还在设计和定制方面提供了极大......
  • 如何快速搭建一个wordpress个人网站?
    WordPress是全球最流行的开源的博客和内容管理网站的建站平台,具备使用简单、功能强大、灵活可扩展的特点,提供丰富的主题插件。腾讯云轻量应用服务器提供WordPress应用镜像,您可以使用它快速搭建博客、企业官网、电商、论坛等各类网站。说明本文档示例WordPress应用镜像底层基于......
  • 京东云轻量云主机快速搭建WordPress个人网站教程!
    WordPress是使用最广泛的博客和内容管理系统,支持丰富的插件和模板,功能强大,易于扩充功能。您可以使用它快速搭建独立的博客、论坛等网站,也可以做CMS使用。创建轻量云主机访问轻量云主机创建实例页选择WordPress镜像,以及套餐版本、时长等内容,进行下单创建轻量云主机实例查看应用详情......
  • 【题解】Solution Set - NOIP2024集训Day32 数位 dp
    【题解】SolutionSet-NOIP2024集训Day32数位dphttps://www.becoder.com.cn/contest/5537order:1,3,5,6,2,4「SDOI2013」淘金就是要算前\(k\)大的和。考虑一个位置\((i,j)\)在变化完了之后的金子个数。(也即逆变换。设:\(f^\prime(x)\)表示在\(1\simN\)范围内,数位......
  • 腾讯云轻量应用服务器搭建WordPress个人博客系统
    WordPress是全球最流行的开源的博客和内容管理网站的建站平台,具备使用简单、功能强大、灵活可扩展的特点,提供丰富的主题插件。腾讯云轻量应用服务器提供WordPress应用镜像,您可以使用它快速搭建博客、企业官网、电商、论坛等各类网站。说明本文档示例WordPress应用镜像底层基于......
  • 蓝易云服务器 - ubuntu系统服务器安装WordPress教程
    在Ubuntu系统服务器上安装WordPress的教程如下:安装LAMP(Linux+Apache+MySQL+PHP):在终端中运行以下命令安装LAMP组件。sudoapt-getupdatesudoapt-getinstallapache2mysql-serverphplibapache2-mod-phpphp-mysql配置MySQL:运行以下命令配置MySQLroot用户的密码,并进行其......
  • 提升产品管理技能,考个NPDP证书帮大忙
    在当今快速变化的商业环境中,产品管理作为企业创新与增长的核心驱动力,其重要性日益凸显。一个优秀的产品经理不仅能够洞察市场需求,还能引领团队开发出符合用户期望、具有竞争力的产品。为了不断提升自身的产品管理技能,许多专业人士选择通过考取新产品开发专业人士认证(NPDP)来增强自己......