poj 1192 求树的最大权子树(树形dp)

利用eds editor生成CANOPEN 设备eds文件 通过以上步骤,您可以根据实际设备的功能特性,自动生成一份符合CANopen协议标准的电子数据表(EDS文件),该文件可以被上位机软件或其他CANopen主站设备用于识别、配置和控制您的CANopen从站设备。使用CANopen EDS Editor生成CANOPEN设备的EDS文件是一个系统化的过程,它涉及将设备的具体技术参数和功能映射到CANopen规范定义的对象字典中。 阅读详情

题意:给定一棵树,每个节点都赋予一个权值,求一个子树,使得子树所有节点的权值之和最大。题目中节点是按照整数坐标的形式给出的,相邻的坐标之间有边相连。

思路:树型dp。dp[i]表示以i为根的子树具有的最大权值。dp的思路犹如一维最大子区间,即对于根节点i的所有子树j,如果j中节点的最大权大于0,则加入,否则舍弃。

#include <stdio.h>
#include <string.h>
#define max(a,b) ((a)>(b)?(a):(b))
#define N 1005
struct edge{
	int y,next,w;
}e[N*2];
struct point{
	int x,y;
}p[N];
int n,top,first[N],s[N],dp[N];
int adjacent(int i,int j){//判断p[i]和p[j]是否相邻
	return abs(p[i].x-p[j].x)+abs(p[i].y-p[j].y) == 1;
}
void add(int x,int y){
	e[top].y = y;
	e[top].next = first[x];
	first[x] = top++;
	e[top].y = x;
	e[top].next = first[y];
	first[y] = top++;
}
void dfs(int x,int fa){
	int i,y;
	dp[x] = s[x];//x为根的话它自己肯定得加入
	for(i = first[x];i!=-1;i=e[i].next){
		y = e[i].y;
		if(y != fa){
			dfs(y,x);
			if(dp[y] > 0)
				dp[x] += dp[y];
		}
	}
}
int main(){
	freopen("a.txt","r",stdin);
	while(scanf("%d",&n)!=EOF){
		int i,j,res;
		memset(first,-1,sizeof(first));
		memset(dp,0,sizeof(dp));
		top = 0;
		for(i = 0;i<n;i++)
			scanf("%d %d %d",&p[i].x,&p[i].y,&s[i]);
		for(i = 0;i<n-1;i++)
			for(j = i+1;j<n;j++)
				if(adjacent(i,j))
					add(i,j);
		dfs(0,-1);
		res = -0x3fffffff;
		for(i = 0;i<n;i++)//扫一遍找最大的
			res = max(res,dp[i]);
		printf("%d\n",res);	
	}
	return 0;
}


STM32CubeMX+FreeRTOS+CAN总线+传感器实战:多任务系统与通信融合开发详解 本文详细介绍了基于STM32CubeMX和FreeRTOS的CAN总线与光电传感器融合开发实战。通过多任务系统设计,实现传感器数据采集与CAN通信的协同工作,提供完整的配置例程和调试技巧,适用于工业控制与机器人感知等应用场景。 阅读详情

相关推荐

rk3399 linux 5.10 usb 2.0设备上电概率性注册失败

先排除硬件上的问题,然后就烧录kernel 4.1的的镜像,多次测试也没有发现这个问题,所以排除了硬件上的问题,然后。查下usb hub和usb 4G的复位脚,写驱动都给它们配上了,但是还是存在这个问题。最后通过对比rk3399.dtsi发现少了个power-domains = ;多次开关机,发现usb hub和4G都通信失败了,这就有点奇怪了,按理说usb驱动是没啥问题的。加上后,重新编译烧录,重新测试没有发现这个问题了!先查看usb log。

qq_32017483的博客 2673

最大权值和子树

最大权值和子树 给定一个树,每个点有权值,可正可负,求一个子树,使得权值和最大,复杂度为O(n) 也就是找一个树的连通子图 设f[i]表示以i为根的子树里最大权值和子树 在设置一个维度表示是否选择第i个节点 设f[i][1]表示选,f[i][0]表示不选 f[i][1]=w[i]+sum( max( 0,f[j][1] ) )也就是选择这个点,这个点的权值加上子节点最大的权值 f[i][0]=max( 0,max( max(f[j][0],f[j][1]) ) )也就是不选这个点,看看是否选择这个点的字节点

CCCCDEV_CCCC的博客 944

2025.06.25【微生物】|Emu工具安装与使用详解:全长16S扩增子微生物丰度分析

Emu是一款基于贝叶斯方法的微生物多样性分析工具,专为处理高错误率的长读长16S/18S扩增子数据优化。本文详细介绍了Emu的安装与使用方法:1)通过conda创建独立环境并安装Emu;2)提供SILVA等预构建数据库的下载指南,并说明自定义数据库的构建方法;3)演示单样本和多样本分析流程,解读关键输出文件;4)介绍丰度表合并、分类等级汇总等实用功能扩展;5)建议后续分析方向。文章还附有官方GitHub链接和相关文献资源,为微生物群落结构研究提供了一套完整的分析解决方案。

1256

树形DP:k结点子树最大权值和

很基础的一类题目,要用到01背包问题的思想。 ZOJ3201 题解 含有k个结点的权值和最大的子树。 dp[i][j]表示以i为根的,含有j个结点的最大权值 dp[i][j] = max(dp[i][j],dp[i][j-k] + dp[v][k])。v是i的子结点。类似于分组背包问题,每个结点算一个组,每个组又有很多种选择。 代码 #include <bits/stdc++....

FlyingJack 1765

DIKW模型实战:用Obsidian打造个人知识库的5个关键步骤

本文详细介绍了如何利用DIKW模型在Obsidian中构建高效个人知识库的5个关键步骤,从数据收集到智慧应用的全流程实践。通过标记系统、信息加工引擎和知识结晶方法,帮助知识工作者实现从原始数据到决策智慧的认知跃迁,提升个人知识管理效率。

gamma的博客 578

ROSTEA软件下载及情感分析详细操作教程(附网盘链接)

原ROST虚拟团队出品的ROST系列文本内容挖掘分析平台,是辅助人文社会科学研究的免费计算平台。该软件可以实现文本预处理、分字、分词、词性识别、特殊名词抽取、词频统计、英文词频统计、情感计算、分类算法、聚类算法等一系列文本挖掘,是人文社科研究和论文写作的一把利器。该软件用户量超过一万人,遍布海内外100多所大学,包括剑桥大学、日本北海道大学、北京大学、清华大学、香港城市大学、澳门大学等众多高校。关于ROSTCM6的安装介绍可以参考之前的文章ROSTCM6软件下载及语义网络分析详细操作教程ROST EA。

m0_64336780的博客 1万+

[蓝桥杯][2015年第六届真题]生命之树

题目描述 在X森林里,上帝创建了生命之树。 他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值。 上帝要在这棵树内选出一个非空节点集S,使得对于S中的任意两个点a,b,都存在一个点列 {a, v1, v2, …, vk, b} 使得这个点列中的每个点都是S里面的元素,且序列中相邻两个点间有一条边相连。 在这个前提下,上帝要使得S中的点所对应的整数的和尽量大。 这个最大的和就是上帝给生命之树的评分。 经过atm的努力,他已经知道了上帝给每棵树上每个节点上的整数。但是由于 atm

Piink的博客 338

1、初探 Tiny Machine Learning

Tiny Machine Learning(TinyML)是机器学习与嵌入式系统的融合领域,致力于在资源受限的微控制器上运行AI模型。本文介绍了机器学习基础、TinyML的核心概念、应用领域(如智能家居、工业物联网、医疗保健)、面临的挑战(如资源限制、模型压缩、数据质量),以及从硬件准备到模型部署的实践步骤。通过利用训练与推理的资源不对称性,可在PC上训练模型并部署至低功耗设备进行实时推理,推动边缘智能的发展。

loss4bartender的博客 122

Treap

START 随机平衡二叉查找树 Treap [注:本文大部分资料选自郭家宝 《随机平衡二叉查找树 Treap的分析与应用》,结合老师的通俗讲解及本人某些吐槽写就……尴尬] 一、二叉查找树 1.概述:二叉查找树(Binary Search Tree)是基于插入思想的一种在线的排序数据结构,简称BST。这种数据结构的基本思想是在二叉树的基础上,规定一定的顺序,使数据可以有序地存...

littlewyy的博客 581

Python爬虫:爬取健身平台运动数据(跑步、骑行轨迹)

通过分析这些运动数据,用户能够了解自己的运动趋势、运动成绩,并作出相应的调整。通过使用Strava的API,我们成功地获取了用户的运动活动信息和运动轨迹数据,并进行了存储与可视化。Strava的API提供了丰富的数据接口,能够通过OAuth2认证获取用户的运动数据,包括历史数据、运动轨迹等信息。Strava的API还提供了获取活动轨迹数据的接口,返回的数据格式通常是GeoJSON格式,适用于地图可视化。随着大数据技术的发展,运动数据的分析和可视化为个人健康管理、运动训练计划的优化等提供了强大的支持。

2201_76125261的博客 1076

C#构建高精度预测模型:从数据预处理到模型部署的实战指南

【代码】C#构建高精度预测模型:从数据预处理到模型部署的实战指南。

墨夶的博客 1264

C++求树的最大子树权值和

#include <iostream> #include <vector> using namespace std; const int N = 100010; typedef long long LL; LL ans; vector<LL>t[N]; LL w[N]; void dfs(int root, int fa) { for (int i = 0; i < t[root].size(); i++) { int child = t[root][i];

m0_51955470的博客 1062

十四种逻辑器件综合对比——《器件手册--逻辑器件》

逻辑器件是数字电路中最基本的逻辑单元,用于实现基本的逻辑运算,如与、或、非、异或等。逻辑门根据输入信号的组合产生相应的输出信号。与门:只有当所有输入信号都为高电平时,输出才为高电平。或门:只要有一个输入信号为高电平,输出就为高电平。非门:输出信号与输入信号相反。异或门:当两个输入信号不同时,输出为高电平;相同则输出为低电平。用于对输入信号进行反相操作,即将高电平转换为低电平,低电平转换为高电平。常用于信号的反相处理和逻辑电平的转换。

XU157303764的博客 2030

poj1192 最优连通子集(树形dp)

题目链接:poj1192 最优连通子集 求一棵无向树的最大子树和。。类似于求最大子段和的办法,树形dp。 dp[i][0]:以i为根,不包括 i 结点的子树最大权 dp[i][1]:以i为根,包括 i 结点的子树的最大权 dp[i][0] = max(dp[j][0] , dp[j][1]) (j 为 i 的儿子) dp[i][1] += dp[j][1] (dp[j][...

dhe56357的博客 222

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

poj 1192 最优连通子集

题目链接:http://poj.org/problem?id=1192 题目大意:求一棵树的最大权连通子集,开始做树形dp的时候错误的认为整棵子树都要加进去,后来才发现错误。 #include #include #include #include #include #include #include #include #include #include #include using names

Wings_of_Liberty的专栏 724

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

poj1192 最优连通子集--树形dp

原题链接:http://poj.org/problem?id=1192 题意:其实就是一个求无向树的所有子树和的最大值 分析: 树形dp dp[i][0]表示以i为根,不包括i结点的子树获得最大权 dp[i][1]表示以i为根,包括i结点的子树获得的最大权 dp[i][0] = max(dp[k][0], dp[k][1]) k为i的所有孩子结点 dp[i][1] = i

半壶老酒 832

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

POJ1192 最优连通子集(树形DP)

单整点集V是无向无环图,可以看作树。 dp[u]表示,选取u点时u点和它子树最大的权和。 而某个点不选,那么它和它子树的最大权和是0,因为题目求的集合要连通。 状态转移方程是:dp[u]=∑max(0,dp[son(u)])。 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstri...

dengliugong3918的博客 138

POJ1192最优连通子串----树形dp

中文题面,目的很明显,把相邻的两个点看成是两个点之间有一条边,就能当成树形dp来做了。 用一遍dfs可以找出最大的子树权值和。 #include<iostream> #include<vector> #include<queue> #include<string.h> #include<stdio.h> #in...

weixin_30687587的博客 110

poj 1192

http://blog.youkuaiyun.com/birdforever/article/details/5874502 题目中文。。。。但是描述得很复杂。。。不知道为啥要这样, 其实就是一个求无向树的所有子树和的最大值 树形dp dp[i][0]表示以i为根,不包括i结点的子树获得最大权 dp[i][1]表示以i为根,包括i结点的子树获得的最大权 dp[i][0] = max(dp[k][0

涛涛不解 1465

P5766 [NOI1999]最优联通子集(树形dp)

最优联通子集 洛谷题目传送门 这题在北大网站上也有POJ.1192 最优联通子集 Description 众所周知,我们可以通过直角坐标系把平面上的任何一个点P用一个有序数对(x, y)来唯一表示,如果x, y都是整数,我们就把点P称为整点,否则点P称为非整点。我们把平面上所有整点构成的集合记为W。 定义1 两个整点P1(x1, y1), P2(x2, y2),若|x1-x2| + |y1-y2| = 1,则称P1, P2相邻,记作P1~P2,否则称P1, P2不相邻。 定义 2 设点集S是W的一个有限子集

我很菜的好吧 771

POJ 1192

POJ 1192 Noi的题>.< 题目大意:给出一些点,坐标都是整数,如果两个点的距离为1,则说明相邻..(省略繁琐题意),删点后连通……总之就是构建了一棵树,每个节点有一个权值,求这棵树的一颗子树,有权值最大。 解:首先说下自己的二点,没看到树的性质(每两个点有且只有一条路径联通),然后刚刚切完一系列的双连通分量,很激动的用贪心,每次去除掉一个当前权值最小且非割点的的点=。=...

weixin_30415113的博客 165

poj1192(树形dp)

感谢涛涛不解 这道题着实花了很长时间才搞明白,对图的知识忘得太多了,看这道题之前最好先把图的邻接表表示方法看下,有助于对这道题的理解,这道题让我对深度优先遍历又有了进一步的了解 这道题最好画个图,有助于理解,不过你要是画个错误的图此题就无解了 其实就是一个求无向树的所有子树和的最大值 树形dp dp[i][0]表示以i为根,不包括i结点的子树获得最大权 dp[i][1]表示以i为根,包...

weixin_33958366的博客 81

POJ 1192最优连通子集

最优连通子集 题目的描述太繁琐了。。。其实意思简单,就是给定若干个点,如果两个点之间的曼哈顿距离小于1,就连边。然后就构成一颗树,然后每个点都 有一个权值,然后选取若干个点,使得权值和最大,并且点与点之前都连通。简单的树形DP,dp[i]表示以i点为根的子树并且选取i点时的最大权值。 方程就很好写,dp[i]+=dp[u] ,其中u为i的儿子节点,并且dp[u]>0直接dfs一次,同时直

BootStar 691

POJ - 1192 最优连通子集 (树形DP)

最优连通子集 Description 众所周知,我们可以通过直角坐标系把平面上的任何一个点P用一个有序数对(x, y)来唯一表示,如果x, y都是整数,我们就把点P称为整点,否则点P称为非整点。我们把平面上所有整点构成的集合记为W。  定义1 两个整点P1(x1, y1), P2(x2, y2),若|x1-x2| + |y1-y2| = 1,则称P1, P2相邻,记作P1~P

LP_Cong 601
上一篇: poj 1947 树形dp(得到含P个节点联通块的最小切边数)
下一篇: poj 2342/3342 树上的带权最大独立集(不与上司去吃饭)
dumeichen
博客等级 码龄13年 55粉丝 475原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值