POJ-2152 树形dp

2006陈启峰 - 消防站解题报告 2006陈启峰 - 消防站解题报告 poj 2152 fire 立即下载

题意:给你一颗树,边上权值表示距离,一个点上可以建消防站,花费为val[i],一个节点要么建消防站,要么周围d[i]距离内必须有一个消防站,求最小花费。

想了好久没想到,看了一眼题解才恍然大悟。我真的是太菜了!
题解:设ans[u]为以u为根的这棵子树的答案,dp[u][v]表示u节点被v保护的答案,dis[v]表示u到v的距离。若v可以保护u,则
dp[u][v]=val[v]+∑min(dp[i][v]−val[v],ans[i]);//其中i是u的直接子节点
ans[u]=min{dp[u][i]};

代码

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
#include<cmath>
using namespace std;
typedef long long ll;
const int maxn=1010;
int dp[maxn][maxn],dis[maxn],val[maxn],d[maxn],ans[maxn];
struct node{
	int x;
	int w;
	node(int _x,int _w)
	{
		x=_x;
		w=_w;
	}
};
vector<node>a[maxn];
int t,n;
void Dfs(int u,int fa)
{
	for(int j=0;j<a[u].size();j++)
	{
		int v=a[u][j].x;
		ll w=a[u][j].w;
		if(v==fa) continue;
		dis[v]=dis[u]+w;
		Dfs(v,u);
	}
}
void dfs(int u,int fa)
{
	dp[u][u]=val[u];
	for(int j=0;j<a[u].size();j++)
	{
		int v=a[u][j].x;
		ll w=a[u][j].w;
		if(v==fa) continue;
		dfs(v,u);
	}
	dis[u]=0;
	Dfs(u,-1);
	for(int i=1;i<=n;i++)
		if(dis[i]<=d[u])///能被覆盖到
		{
			dp[u][i]=val[i];
			for(int j=0;j<a[u].size();j++)
			{
				int v=a[u][j].x;
				if(v==fa) continue;
				dp[u][i]+=min(ans[v],dp[v][i]-val[i]);///
			}
			ans[u]=min(ans[u],dp[u][i]);///
		}
}
int main()
{
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);
		for(int i=1;i<=n;i++)
		scanf("%d",&val[i]);
		for(int i=1;i<=n;i++)
		scanf("%d",&d[i]);
		
		for(int i=1;i<=n;i++)
		a[i].clear();
		memset(dp,0x3f,sizeof dp);
		memset(ans,0x3f,sizeof ans);
		for(int i=1;i<n;i++)
		{
			int x,y,w;
			scanf("%d%d%d",&x,&y,&w);
			a[x].push_back(node(y,w));
			a[y].push_back(node(x,w));
		}
		dfs(1,-1);
		 
		printf("%d\n",ans[1]);
	}
	return 0;
}
ADS软件操作(10)——DAC控件使用 该控件可以用于为元件定义随频率变换的参数,如放大器的最佳负载阻抗或者源阻抗,需要双频匹配时的优化等,下图是ADS中该控件的模型。 阅读详情

相关推荐

基于NXP1778的CAN自动波特率检测

一、概念 NXP1778芯片内部自带一个CAN控制器。CAN模块由两部分组成:控制器和验收滤波器。所有的寄存器和RAM都以32位字宽度来访问。 CAN自动波特率检测主要用于以一种CAN的转换的产品中。产品中CAN部分的波特率以前都是通过网页中修改然后配置下去的,依据实际情况的考虑,如果CAN部分的波特率能够根据客户设备的改变而自动改变,将会增加其灵活性。   二、原理 根据CAN控制器的

菜鸟的痕迹专栏 5271

poj 2152 Fire (树形DP难题)

题目链接;https://vjudge.net/contest/246776#problem/C 题目大意:有n个城市,每两个城市只有一条路连接,(所以可以当成是一颗树)。现在要建设一些防火站,使每个城市都可以被覆盖。每个城市的属性是:在本城市建防火站的价钱和不在本城市建设的话,所依赖的别的防火站的最长距离。然后是n-1条路,和这条路的长度。现在问在覆盖所有城市的前提下的最少价格。 题目思路:...

qq_36782366的博客 412

从零开始用QP框架开发STM32:事件驱动编程实战指南(附状态机设计技巧)

本文详细介绍了如何使用QP框架在STM32上实现事件驱动编程,包括状态机设计技巧和嵌入式开发实践。通过对比传统前后台系统和RTOS,展示了QP框架在资源占用、实时性和代码可维护性方面的优势,并提供了从环境搭建到高级状态机设计的完整指南。

h6i7j8的博客 1173

POJ - 2152 Fire 树型DP

题目大意:有N座城市,要求在这N座城市中建一个消防系统,使得每座城市城市着火时都能被按时扑灭 现在给出每座城市建一个消防站所需的花费w和每座城市相邻消防站的最远距离lim(和该城市距离超过lim的城市的消防站无法救该城市的火),问要使所有的城市都能被救到火,建消防站的最小花费是多少解题思路:参考了别人的题解,果然还是太弱了。。。 要使该城市能被救到火,那么消防站不是建在该点,就是建在以该点为根的

静静地码 1121

【大模型推理】工作负载的弹性伸缩

推荐采用 并发请求数(Concurrency) 或 队列深度(Queue Size) 结合GPU监控指标(显存/算力利用率),并依托Knative KPA、Fluid缓存、优先级调度等技术实现高效弹性伸缩[citation:6][citation:7][citation:8]。QPS无法体现这种资源消耗累积效应[citation:6]。并发数的本质:是实时反映资源占用的瞬时状态量,而非速率指标,尤其适合单次请求资源消耗大、处理时间长的业务(如LLM推理)[citation:1][citation:6]。

王尚权 qq:2515162716 1185

小样本学习概述

目录 前言 小样本学习存在的意义? 什么是小样本学习? 小样本学习的方法有哪些? 结语 前言 小样本学习(Few-Shot Learning)是近几年兴起的一个研究领域,小样本学习旨在解决在数据有限的机器学习任务。 小样本学习存在的意义? 近些年,以深度卷积神经网络为代表的深度学习方法在各类机器学习任务上取得了优异的成绩——很多任务上已经超越了人类表现。狂欢背后,危机四伏。因为这些深度学习方法work的关键之一是海量标注数据的支持。 但是在工业界,很多时候难以获得海量的训练数据,更.

DwD-的博客 3万+

poj 2152 一道很难的树型DP

题目:poj 2152  Fire          我想说的:以前做背包的题目做多了,脑子形成了一种就是所有动态规划就是在数组上进行等一些固定的思想。结果最近在做一些题目的时候,感觉无从下手,想好久都没结果。非常庆幸自己做了这类题目,让我从那种狭隘的思想中做出来。以后就要根据实际情况研究状态了。          题意:有n个城市,每两个城市只有一条路连接,(所以可以当成是一颗树)。现在要建

nyist_jiang 3364

MT6816角度传感器SPI通信避坑指南:从数据手册到稳定读取的3个关键步骤

本文详细解析了MT6816角度传感器SPI通信中的常见问题与解决方案,包括寄存器地址计算、SPI时序配置和数据校验等关键步骤。通过实测波形和代码示例,帮助工程师避开数据手册中的隐藏陷阱,实现稳定可靠的角度数据读取,特别适用于高精度电机控制场景。

weixin_42520573的博客 516

[POJ2152]消防站解题报告

做这道题的时候,我一开始状态设计的太紧了,我设f(i)表示以i为根的子树自己搞定自己需要的最小代价,然后我枚举控制根的点。。然后发现转移是O(N^3)的。 看了论文之后发现其实改变一下状态就可以了,其实显然的一件事就是我们现在是在枚举两个点之间的关系了,那么我们不妨设f(i,j)为j控制i,且以i为根的子树都被完全搞定的最小代价;那么状态转移方程就呼之欲出了。 ①这道题告诉我最大的一点就是当我

TA 1140

右腿驱动电路设计:从共模干扰原理到生物电采集实战

在生物电信号采集领域,共模干扰是影响测量精度的核心挑战之一,其本质源于环境电磁场通过容性耦合在人体表面产生的感应电流。根据欧姆定律,由于人体组织阻抗的不均衡性,共模电流会在不同测量点产生差异化的压降,从而转化为难以滤除的差分噪声。为解决这一问题,右腿驱动技术应运而生,它通过负反馈原理主动抵消干扰,显著提升系统的共模抑制比。该技术广泛应用于心电图、脑电图等医疗电子设备中,是确保微弱生理信号质量的关键环节。本文结合工程实践,深入剖析了右腿驱动电路中的仪表放大器选型、反馈环路稳定性设计以及PCB布局布线要点,为高

weixin_31476015的博客 443

Windows环境下ABAQUS、Fortran 编译器及Visual Studio的安装和关联

点击Continue,在随后的弹窗中勾选accept,并点击Customize(注意,在接下来的安装图片中,显示的版本号是2024.2,图片来自于一次失败的安装,懒得再截图了,步骤毫无区别,请见谅)。在下一步中,保持默认选项,之后软件会自动关联到刚才安装到visual studio,随后下一步进行安装(如果电脑中已经安装有其他版本的visual studio,则只保留2022)。在随后的弹窗中,根据指示找到。以防万一,尽量暂时退出所有杀毒软件,关闭防火墙,一般不会有影响,为确保万无一失,可以执行此步。

samurai12的博客 9952

Fire POJ - 2152 (树形dp)

题意:给你一颗树,每个点都有一个w值,代表在这个点修建工程需要花费w,还有一个d值,代表离这个点距离小于d的点可以作为这个点的建立工程的点。每条边都有权重,求出覆盖所有点的最小花费。 思路:首先分析,是否具有最优子结构性质,发现任意一颗子树的最小值,都满足最优子结构。考虑动态规划的做法。 这个题的难点在于可以选一个点来覆盖其他点,所以我们的一个想法必然是枚举这个被选取的点。 设dp[u][j...

untilyouydc 480

【学前须知】推荐阅读顺序

AUTOSAR学习笔记专栏文章推荐阅读顺序

weixin_47571898的博客 744

Fire (poj 2152 树形dp)

Fire (poj 2152 树形dp) 给定一棵n个结点的树(1<n<=1000)。现在要选择某些点,使得整棵树都被覆盖到。当选择第i个点的时候,可以覆盖和它距离在d[i]之内的结点,同时花费为v[i]。问最小花费。 以前做过一道类似的题(水库),这道题也差不多。首先来考虑,用\(best[i]\)表示以i为根的子树的最小花费。这样做有什么问题呢?它无法很好的处理消防站...

171

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【POJ 2152】Fire【树形DP】

题意:给出一棵树,要求在节点出

Hacb的专栏 474

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

poj2152(Fire) 树形DP

题目链接:http://poj.org/problem?id=2152 题意:一棵带边权的树,边权表示节点间距离,在i上建立消防站的代价是w[i],如果在一点i没建消防站,那么它与距离这个点最近的消防站之间的距离不能大于d[i]。问满足建站最小的花费; 解法;看了陈启峰的论文才会的,感觉挺难的,不过论文里分情况讨论了,应该不需要;dp[i][j]表示在i处选择j处作为供应站(但是并不一

xiefubao的专栏 1039

POJ2152 树形DP

题意:这一题是陈启锋的论文中

江上白衣凌云 1003

POJ 2152 经典树形dp

Fire Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 972   Accepted: 463 Description Country Z has N cities, which are numbered from 1 to N. Cities are connect

_rabbit的专栏 1363

POJ 2152 Fire (树形dp)

转发一篇国家队论文。 树形dp 对这题讲的挺清楚的。 #include<iostream> #include<algorithm> #include<cstdio> #include<stdio.h> #include<string.h> #include<queue> #include<cmath> #inclu...

WayJasy的博客 242

【树形DP】POJ 2152 Fire

通道:http://poj.org/problem?id=2152 题意:n个城市,建防火站,花费w[i],如果这个城市没有防火站,则最近的不超过d[i],求最小花费 思路: 设dp[i][j]表示i点及其子树都符合情况下i点依赖j点的最小花费,有了这个似乎还不够,再开个一维数组best,best[i]表示以i为根的子树符合题目要求的最小花费。这样状态转移方程就是dp[i][j] ...

113

POJ2152 Fire(树形 dp)

Description 给定一棵无根有权树,每个点建消防站都有一定代价 ccc,每个点都有一个限制 limlimlim,表示离它最近的消防站的最大距离。求让所有点安全的最小代价。 Solution 设 fi,jf_{i,j}fi,j​ 为以 iii 为根的子树全安全,且 jjj 管理 iii 的最小代价,bestibest_ibesti​ 为以 iii 为根的子树全安全的最小代价,结果显然为 be...

ylxmf2005's Blog 201

poj 2152 Fire - 经典树形dp

题目链接: http://poj.org/problem?id=2152 不多说。。  2006 陈启峰消防站解题报告 这dp简直是神了。。 #include #include #include #include #include #include #include #include #include #include #include #includ

呼,是出一口气;吸,是争一口气! 666

【poj2152】Fire 树形DP

DescriptionCountry Z has N cities, which are numbered from 1 to N. Cities are connected by highways, and there is exact one path between two different cities. Recently country Z often caught fire, so t

DQS的树洞 1346

poj 2152 Fire (树形dp)

DescriptionCountry Z has N cities, which are numbered from 1 to N. Cities are connected by highways, and there is exact one path between two different cities. Recently country Z often caught fire, so t

阿柟喜欢吃小星星? 373

Poj 2152 Fire (DP_树形DP)

题目链接:http://poj.org/problem?id=2152 题目大意:给定n个节点组成的树,树有边权.现在要在一些点上建立消防站,每个点建站都有个cost[i],如果不在当前的点上建站,也要依赖其他的消防站,并且距离不超过limit[i]。求符合上述条件的最小费用建站方案。n 解题思路:复杂度为O(n^2)的树形DP.因为要依赖其他站点,所以不仅仅只从子树中获

3277

【POJ2152】Fire——树形DP

Fire 树形DP

Johann的博客 737
上一篇: CodeForces - 834D(线段树优化dp)
下一篇: Miller_Rabin素数测试[Fermat小定理][二次探测定理][同余式][Wilson定理]
GoLakerswxy
博客等级 码龄9年 41粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值