【树形DP】Centroid

Zynq7000混合启动方案:QSPI Flash引导与eMMC ext4文件系统部署实战 本文详细介绍了Zynq7000平台的混合启动方案,结合QSPI Flash引导与eMMC ext4文件系统部署,解决嵌入式Linux系统启动可靠性与大容量存储需求。通过硬件连接配置、分区规划、Petalinux工程配置及实战部署步骤,帮助开发者高效实现系统优化,提升启动速度和文件系统性能。 阅读详情

题目链接http://www.bnuoj.com/bnuoj/contest_show.php?cid=5763#problem/65371

题意:给一棵树,对某个节点定义一个value:删除该结点后,剩下的各连通分量中最大的结点数目。

思路:不需要用二叉树,于是可以直接旋转,从而可以视任何结点为根。于是建树部分就可以直接对输入的边(a-b)限制方向(a->b),让a作为父亲,b作孩子。

我们可以遍历一次该树后,对于每个结点设置一个weight,即以该结点为根的子树的结点数目。

考虑每个结点,如果有g个孩子,那么如果是根,移除后剩g个联通分量,如果不是根,就剩g+1个联通分量。

于是value的求法就是:

对于根,value=max{各孩子的weight}

对于非根结点,value=max{各孩子的weight,根的weight-自身的weight}

PS:上述也可以合并:value[i] = max{weight[孩子], 根weight-自身weight},因为如果是根,上述第二项为0,不影响结果。

#include <cstdio>
#include <cstring>
#include <vector>
#include <climits>
#include <algorithm>
#include <utility>
using namespace std;

const int MAX = 16007;
struct Node {
	int id;
	vector<int> kids;
	void init() {
		kids.clear();
	}
} tree[MAX];
int weight[MAX];
int dp[MAX];
int in[MAX]; //入度,入度为0的结点作为根 
int n, root;

int touch(int root) {
	if (root <= 0 || root > n) return 0;
	else {
		weight[root] = 1;
		for (int i = 0; i < tree[root].kids.size(); ++i) {
			weight[root] += touch(tree[root].kids[i]);
		}
		return weight[root];
	}
}

void DP(int root) {
	if (root != ::root) {
		//printf("init %d\n", root);
		dp[root] = weight[::root] - weight[root];
	}
	for (int i = 0; i < tree[root].kids.size(); ++i) {
		dp[root] = max(dp[root], weight[tree[root].kids[i]]);
		DP(tree[root].kids[i]);
	}
}

int main() {
	for (int i = 0; i < MAX; ++i) tree[i].id = i;
	
	int timer = 0;
	//while (~scanf(" %d", &n)) {
	scanf(" %d", &n);
		for (int i = 0; i <= n; ++i) tree[i].init();
		memset(in + 1, 0, sizeof(int) * n);
		
		int a, b;
		for (int i = 1; i < n; ++i) {
			scanf(" %d %d", &a, &b);
			tree[a].kids.push_back(b);
			++in[b];
		}
		//find root
		for (int i = 1; i <= n; ++i) {
			if (in[i] == 0) {
				::root = i;
				break;
			}
		}
		
		memset(dp, 0, sizeof(dp));
		memset(weight, 0, sizeof(weight));
		weight[root] = touch(root);
		DP(root);
		
		int ans = INT_MAX;
		for (int i = 1; i <= n; ++i) {
			if (dp[i] < ans) ans = dp[i];
		}
		
		vector<int> v;
		for (int i = 1; i <= n; ++i) {
			if (dp[i] == ans) {
				v.push_back(i);
			}
		}
		printf("%d %d\n", ans, v.size());
		for (int i = 0; i < v.size(); ++i) {
			printf("%d%c", v[i], (i == v.size() - 1 ? '\n' : ' '));
		}
	//}
	
	return 0;
}


Python 爬虫实战:arXiv 学术论文 PDF 批量下载(含反爬策略与文件命名规范) arXiv 是全球最大的免费开放预印本论文平台之一,涵盖物理学、数学、计算机科学等多个学科领域。研究人员、学生和工程师常常需要批量下载论文 PDF 进行文献综述、构建机器学习数据集或进行文本挖掘研究。然而,手动逐篇下载论文效率低下,因此开发一个自动化批量下载工具显得尤为重要。 阅读详情

相关推荐

《从0到1:CTFer成长之路》书籍配套题目-[第二章 web进阶]文件上传

[第二章 web进阶]文件上传开始行动绕过第1个限制绕过第2个限制 介绍:记录一下笔记,方便以后迅速回忆使用。 《从0到1:CTFer成长之路》书籍配套题目,来源网站:《从0到1:CTFer成长之路》 先看一下题目源码: <?php header("Content-Type:text/html; charset=utf-8"); // 每5分钟会清除一次目录下上传的文件 require_once('pclzip.lib.php'); if(!$_FILES){ echo '

weixin_46703850的博客 3410

SGU 134 Centroid(树的重心)

思路:找树的重心,就是删除那个节点之后使得剩下子树的节点数最大的最小的点 #include #include #include #include using namespace std; const int maxn = 16000+5; #define inf 1e9 vectore[maxn],ans; int siz[maxn]; int dp[maxn]; int n,minx,

围巾的ACM博客 563

【文献阅读笔记】之基于注意力机制的深度学习路面裂缝检测

中文,计算机辅助设计与图形学学报,第 32 卷 第 8 期,2020 年 8 月。 DOI: 10.3724/SP.J.1089.2020.18059 摘要: 为实现自动准确地检测路面裂缝, 提升路面裂缝检测效果, 提出了一种基于注意力机制的裂缝检测网络 (attention-based crack networks, ACNet). 该网络采用编码器-解码器网络构架, 编码器采用 ResNet34 为骨干网, 提取路面裂缝特征; 在编码器和解码器间加入基于注意力机制的特征模块(attention-b

qq_44785998的博客 7592

快速切题 sgu134.Centroid 树形dp

134. Centroid time limit per test: 0.25 sec.memory limit per test: 4096 KB You are given an undirected connected graph, withNvertices andN-1edges (a tree). You must find the centroid(s) of t...

weixin_30675967的博客 163

Win10无外网热点搭建全指南:纯局域网通信与设备互联

热点并不是只有共享上网一种用途。在很多工程与办公场景中,我们需要的是让手机、笔记本、开发板等设备临时组成一个纯内网,完成文件传输、端口调试或局域网联机,而不需要任何外网出口。Win10笔记本在不连接互联网的状态下,借助系统移动热点或netsh承载网络,完全可以创建一个无外网热点,实现设备间二层互通。其核心在于利用SoftAP建立虚拟无线接入点,并绕开或禁用ICS的NAT转发。掌握这一技术,可在会议、出差、物联网调试等场景中快速搭建临时局域网,无需额外路由器。本文详细梳理三种实现路径、操作步骤及常见故障排查,

weixin_29230773的博客 238

【STM32学习】(29)STM32实现595驱动三个数码管(标准库和HAL库实现)

我选用的单片机型号为:STM32F103系列 74LS595是一个串转并行输出的芯片,它能为单片机节省很多的IO口,应用场景广泛。 现要求三个数码管动态显示,常规设计都是并行实现,需要8个IO数据口,然后还需要3个IO片选数码管接口,这样大大占用了IO口,导致连接的外设变少。因此我们引入74LS595芯片。电路设计如下: 只需要三个共阴极数码管与三个595芯片级联即可完成,通过RCLK,SCK,SER三个IO即可完成对数码管的动态控制并显示。电路焊接的实物图如下: 要求完成功能:实现数.

XiaoCaiDaYong的博客 8263

树形动态规划(树状DP)小结

树状动态规划定义 之所以这样命名树规,是因为树形DP的这一特殊性:没有环,dfs是不会重复,而且具有明显而又严格的层数关系。利用这一特性,我们可以很清晰地根据题目写出一个在树(型结构)上的记忆化搜索的程序。而深搜的特点,就是“不撞南墙不回头”。这一点在之后的文章中会详细的介绍。 首先是扫盲,介绍几条名词的专业解释以显示我的高端(大部分人可以略过,因为学习到树规的人一下应该...

weixin_30512043的博客 1342

高通开发系列 - Bootloader之lk匹配dtb和dtbo中msm-id和board-id的知识

lk匹配dtb和dtbo中的msm-id和board-id等知识

fulinux的博客 4244

SGU 134 Centroid (树形dp 求树的中心)

Centroid Crawling in process... Crawling failed Time Limit:250MS     Memory Limit:4096KB     64bit IO Format:%I64d & %I64u Submit Status Description You are given an undirected

To be what you what to be! 1638

第一章 EB安装

1.DemoWorkspace 是基于EB当前组件配置下的例程,包含了启动文件和中断服务函数以及组件demo。2.Mclsar 下存放的是EB的插件包和静态MCAL的驱动文件。

舊梦的博客 1954

从 ABAP 后端到 AEX,Local Integration Engine 下的 Business System 配置全景

本文围绕SAP PI AEX配置中ABAP后端系统与AEX的连接问题,梳理了关键概念和技术脉络。重点指出基于ABAP 6.20及更高版本的业务系统内置了本地集成引擎(Local Integration Engine),负责与AEX的消息交互。配置要点包括:1)在SM59中创建HTTP类型RFC目标连接AEX;2)配置SAP_PROXY_ESR供设计时代理生成;3)通过SXMB_ADM设置业务系统角色为应用系统;4)确保SLD注册和SICF服务激活。文章特别强调运行时代理消息传递与设计时代理生成的区分,以及H

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 97

【HDU 4863 多校联合】Centroid of a Tree【树形DP】

题意:给出一棵无根树,寻找有多少棵子树的重心与原来的重心

Hacb的专栏 1078

第4章-上下文管理-对话历史记忆系统与窗口优化-《Agentic AI 智能体应用开发》

当上下文窗口接近极限时,需要对已有内容进行压缩。压缩不是简单的截断——你需要保留核心语义,去除冗余。# Python: 对话摘要压缩# 使用 Haiku 做摘要任务,成本最低"""将一段对话历史压缩为摘要"""system="你是一个对话摘要专家。请生成简洁但有信息量的摘要。",f"'用户'

AI天才研究院 245

SGU 134 Centroid(树形dp)

题目链接:SGU 134 Centroid 树形dp。 要找一个点所有子节点(包括这个点的父节点)中具有最大节点数的子节点有两个方向,一个是以这个这个点的所有真正子节点为根的树,另一个是以这个点的父节点为根的树。 这个点父节点那棵树的节点数 = n - (这个点所有子节点的节点数 + 这个点)。 #include #include #include #include #includ

fobdddf的专栏 1033

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

SGU 134 Centroid(树形DP)

居然让这道题卡半天,各种弱啊。。。。 没什么好说的了,觉得这个预处理很亮(我承认之前没想到。。。)   //SGU 134 Centroid //树形DP //by night_watcher #include #include #include #include using namespace std; #define N 16001 #define pb pu

615

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SGU134 Centroid 树形DP

简单树形DP,求树的质心:最大的子树节点数最小的节点 134. Centroid time limit per test: 0.5 sec.  memory limit per test: 4096 KB You are given an undirected connected graph, with N vertices and N-1 edges (a t

878

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SGU 134 Centroid(树形DP)

Description 给出一棵n个节点的无向树,问删去树上哪个顶点及与这个点相连的边后,能够最小化剩余连通块中节点的最大值 Input 第一行为一整数n表示点数,之后n-1行每行两个整数表示树上一条边(1<=n<=16000) Output 输出删去一个顶点后最小的剩余剩余连通块中节点的最大值,并输出满足这个条件的节点数以及这些节点的编号 Sample Input 7 1 2 2

ZSQ 620

HDOJ树形DP专题之Centroid

题目链接 这题跟Balance Act那题差不多,求图的质点。我直接将那题改了一下提交,结果PE了一次,又WA了一次,最后发现是单case,多case的提交为什么WA呢? View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <vector> 4 #define ...

weixin_30653023的博客 135

sgu 134. Centroid 树形dp

134. Centroidtime limit per test: 0.25 sec. memory limit per test: 4096 KBYou are given an undirected connected graph, with N vertices and N-1 edges (a tree). You must find the centroid(s) of the tree...

superkunn的博客 261

[HDOJ 4863] Centroid of a Tree [树形DP]

给定一颗无根树,问有多少棵它的子树具有和

jinzhao1994的专栏 963

SGU 134 Centroid [树形DP]

  水题。。记录每个节点的孩子个数就可以了。。    1 #include <string.h> 2 #include <stdio.h> 3 #include <vector> 4 #include <algorithm> 5 #define MAXN 16001 6 #define INF 0x3f3f3f3f ...

weixin_33826609的博客 125

【SGU】【树】【树形DP】134-Centroid

SGU 134 Centroid 题目 ◇题目传送门◆ 题目大意 给定一棵有NNN个节点的无根树,求树的所有重心及以重心为根的最大子树的节点数量。 思路 很明显的一个DP版题。 所谓重心,就是指一棵树中,若将某个节点删除,得到的所有子树的节点数量尽可能的相等,则称该节点为重心。 基于这个思想,我们设f[u]f[u]f[u]为以uuu为根的最大子树节点个数。 易得状...

IDDFS 240

HDU 4863 Centroid of a Tree (树形dp)

少见HDU的题解网上居然少的可怜,仅有的几篇解释的都不太清楚……         于是自己花了一个晚上的时间理解别人的代码,发现别人的代码虽然是对的,但是写的确实难以理解,所以我决定挑起这个重担,把这道题目解释清楚。         首先,这道题要求子树的重心与原来一样,然后如果原来是两个重心,那么子树同样也得是这两个重心。那么我们先考虑简单的情况,原来的重心假设有两个。由于有两个重心,那么以这两个重心为根的子树的节点数一定相等,即若把连接两个重心的边删除后,树会被分成两棵节点数目相同的树。这个很容易理解,

alpc_qleonardo 720

SGU 134 Centroid 树形DP

题目大意: 给你一颗树,定义树的中心为:如果去掉某个结点,那么剩下的若干子树中,结点最多的树的结点个数就是某结点的价值,计算所有的点的价值,那么价值最小的点就是树的中心。中心可以存在好多个。要你求那个最小的价值,中心的个数,并把这些中心点的编号按照升序输出。 解题思路: 用一遍dfs就搞定了,从第一个点开始往下遍历,如果没有访问过就去访问。sum[i]指从第一个点往下遍历的方向上,以i为根的

世靖的码场 609

hdu 4863 Centroid of a Tree(树形dp)

题意:给出

绝望的乐园 1602

SGU 134.Centroid( 树形dp )

一道入门树dp, 求一棵树的重心...我是有多无聊去写这种题...傻X题写了也没啥卵用以后还是少写好..----------------------------------------------------------------#include<cstdio>#include<cstring>#include<algorithm>using namespa...

weixin_30393907的博客 110
上一篇: 【centOS安装小记】硬盘安装centOS
下一篇: 【欧拉回路】toj 1004 John's trip
bit_line
博客等级 码龄12年 33粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值