UVa12093 Protecting Zonk

【题解】UVa 12093 Protecting Zonk UVa传送门 洛谷RemoteJudge传送门 题目大意:给定一个nnn(n≤10000n≤10000n \leq10000)个结点的无根树。有两种装置AAA和BBB,每种都有无限多个。 在某个结点XXX安装AAA需要C1C1C1的花费,并且此时与结点XXX相连的边都被覆盖。 在某个结点XXX安装BBB需要C2C2C2的花费,并且此时与结点XXX相连的边和与XXX相连的点的边都会被覆盖。 ... 阅读详情

        题意:给定一个有n个节点的无根树,有两种装置A和B,每种都有无限多个。在某个节点X使用A装置需要C1的花费,并且此时与节点X相连的边都被覆盖。在某个节点X使用B装置需要C2的花费,并且此时与节点X相连的边以及与X相连的点相连的边都被覆盖。求覆盖所有边的最小花费。

        思路:树型dp。随便拿一个点当作树根,dp(i,j,k),i代表节点号,j代表选择装置的类型,k代表覆盖状态,数组存该状态下最小花费。其中j=0:不部署装置,j=1:部署A装置,j=2:部署b装置。k=0:当前节点与父节点连接的边没有覆盖,k=1:覆盖了当前节点与父节点连接的边,k=2:覆盖了当前节点与父子节点连接的边,k=3:覆盖了当前节点与父节点,子孙节点连接的边。


#include <iostream>    
#include <stdio.h>    
#include <cmath>    
#include <algorithm>    
#include <iomanip>    
#include <cstdlib>    
#include <string>    
#include <memory.h>    
#include <vector>    
#include <queue>    
#include <stack>    
#include <map>  
#include <set>  
#include <ctype.h>    
#define INF 10000000
#define ll long long
#define min3(a,b,c) min(a,min(b,c))
#define max3(a,b,c) max(a,max(b,c))
#define MAXN 100010

using namespace std;  

vector<int> E[10010];
int dp[10010][3][4];
int n,c1,c2;

inline int fun(int u,int f,int type,int statu){
	if(dp[u][type][statu]!=-1)return dp[u][type][statu];
	
	int re=0;
	
	if(statu==0){
		re=INF;
		int tmp=0;
		for(int i=0;i<E[u].size();i++){
			if(E[u][i]==f)continue;
			tmp+=min3( fun(E[u][i],u,0,1) , 
			          fun(E[u][i],u,1,2) ,
					  fun(E[u][i],u,2,3) );
		}
		for(int i=0;i<E[u].size();i++){
			if(E[u][i]==f)continue;
			re=min(re,tmp-min3( fun(E[u][i],u,0,1) , 
			          fun(E[u][i],u,1,2) ,
					  fun(E[u][i],u,2,3) )+fun(E[u][i],u,2,3));
		}
		
	}else{
		for(int i=0;i<E[u].size();i++){
			if(E[u][i]==f)continue;
			re+=min3( fun(E[u][i],u,0,statu-1) , 
			          fun(E[u][i],u,1,2) ,
					  fun(E[u][i],u,2,3) );
		}
		
		int tmp=0;
		for(int i=0;i<E[u].size();i++){
			if(E[u][i]==f)continue;
			tmp+=min3( fun(E[u][i],u,0,1) , 
			          fun(E[u][i],u,1,2) ,
					  fun(E[u][i],u,2,3) );
		}
		for(int i=0;i<E[u].size();i++){
			if(E[u][i]==f)continue;
			re=min(re,tmp-min3( fun(E[u][i],u,0,1) , 
			          fun(E[u][i],u,1,2) ,
					  fun(E[u][i],u,2,3) )+fun(E[u][i],u,2,3));
		}
	}
	if(type==1)re+=c1;
	if(type==2)re+=c2;
	dp[u][type][statu]=re;
	return re;
}


int main(){
	std::ios::sync_with_stdio(false);
	std::cin.tie(0);
	while(cin>>n>>c1>>c2){
		if(n==0&&c1==0&&c2==0)break;
		memset(dp,-1,sizeof(dp));
		for(int i=1;i<=n;i++)E[i].clear();
		//
		int u,v;
		for(int i=1;i<n;i++){
			cin>>u>>v;
			E[u].push_back(v);
			E[v].push_back(u);
		}
		int ans=min3( fun(1,-1,0,1) , fun(1,-1,1,2) , fun(1,-1,2,3)  );
		cout<<ans<<endl;
	}
	return 0;
}


comsol 多物理场仿真流程-以开关柜为例 1、主要方法 在SolidWorks中对于开关柜的内部与外部结构进行建模,生成能够导入软件计算的3D模型。将SolidWorks中的模型导入comsol软件中,设置参数进行多物理场耦合仿真。 1、具体步骤 删除高压开关柜中对其内部电磁环境无较大影响的结构,如低压测量柜、断路器内部结构等。 导入模型:将厂家提供的3D模型转化为solidworks结构模型。 修复模型:修复已转化模型中转化错误的部分、修复已转化模型中非实体部分、修复已转化模型中重叠实体部分 化简模型:去除过于... 阅读详情

相关推荐

三运放仪表放大器电路设计全解析:从原理到PCB布局避坑指南

本文深度解析三运放仪表放大器电路设计,从差分放大器原理演进到经典三运放架构,详细阐述了其高共模抑制比(CMRR)和高输入阻抗的核心优势。文章重点剖析了电阻匹配、PCB布局对称性等关键设计要点对性能的影响,并提供了基于LTspice的仿真分析与从原理图到PCB布局、焊接调试的全流程实战避坑指南,助力实现高精度信号调理。

redis7keeper的博客 787

UVA - 12093 Protecting Zonk(树形DP经典难题)

传送门 时隔两个多月前来补题,这题真的有点难搞(吐槽= =) Reference: https://www.luogu.com.cn/problem/solution/UVA12093题解第二篇 https://www.cnblogs.com/djh0709/p/9606749.html 首先看到题目,不难发现对于某个节点,两种装置的影响如下图所示: 其中分别用英文缩写代表了祖父,父亲,兄弟,当前节点uuu,儿子,孙子。这已经是影响的最大范围了 但是我们考虑到编程难度,树形DP不就是在树上dfsdfsd

Happig的博客 436

手把手教你理解特斯拉Model 3的域控制器架构:RBCM如何成为“多面手”?

本文深入解析特斯拉Model 3的域控制器架构,重点介绍右车身域控制器(RBCM)如何整合车身电子系统功能。RBCM作为多任务处理中枢,管理空调系统、尾部电气设备和超声波雷达等关键功能,展现了特斯拉在汽车电子架构上的创新设计。文章详细探讨了RBCM的硬件架构、功能版图及信号网络,揭示其如何通过高性能MCU和智能开关技术实现功能集中与效率提升。

weixin_30919429的博客 383

UVa12093

来自luogu的https://www.luogu.org/problemnew/solution/UVA12093 的第二个题解,感谢! 下面是我的思路,参考了博客,建议读博客,我的随便。 // UVa 12093 /* 通过读题就能发现这道题是一道树上的动态规划的问题,与UVa1218(完美的服务)有着相似之处, 所以主要的思路就是将父结点与子结点的关系找出...

weixin_30820151的博客 190

科研党必备:Python脚本批量下载DOI文献的保姆级教程(附避坑指南)

本文为科研人员提供了一份详细的Python脚本批量下载DOI文献的教程,涵盖环境配置、核心功能实现、性能优化及常见问题解决。通过自动化脚本,研究者可高效完成文献批量下载,显著提升科研工作效率,特别适合需要处理大量文献的研究团队使用。

weixin_26965807的博客 477

【Tiny_CD】Tiny_CD变化检测网络详解(含python代码)

tiny-cd网络详解,含论文下载、代码下载地址。

向上生长的程序媛的博客 2161

Protecting Zonk UVA - 12093 (树dp)

题目链接:点击打开链接 题目思路:这道题真的明知道是到dp,但是定义状态也难,转移也难,决策也难,太菜。这道题网上有一个用标准树dp写的写法,但是我觉得太巧妙,比较难想,所以不打算采用那种写法。对于这道题来说最难处理就是b的那个装置,如果是只有a的话,无疑就是一道非常傻逼的题,但是多了b这个条件,有点难处理,那么这道题的切入点在哪呢,我们可以分析到,对于某一个节点来说如果它与它的父节点的某一条边

w571523631的博客 478

SAP 物料的与压缩库存数据不一致

总结:发生这个问题的原因多数会发生在测试系统在拷贝正式系统的时候会发生这样的情况,系统在拷贝的时候,业务数据还在发生,就会导致数据拷贝的时候丢失数据。经过查询发现是由于物料分类账中的物料的库存数量和 ACDOCA_M_EXTRACT表中的数量对不上,导致系统抛出报错的信息。由于是测试系统,直接更改表的数据,把ACDOCA_M_EXTRACT表中的库存数据和金额与物料分类账中的数据保持一致。在测试系统中进行501和561增加库存的时候,系统提示物料的预压缩库存数据不一致的报错。

我小时候很黑的博客 3306

UVA - 12093 Protecting Zonk (较难树形DP)

题目链接:https://vjudge.net/problem/UVA-12093 题意: 有n个城市和n-1条路组成了一个树,现在有花费为c1的机器人A和花费为c2的机器人B,两种机器人都是无限量的,如果在城市u放置机器人A,此时与u连接的边都会被覆盖,如果在城市u放置机器人B,那么与u相连的边都会被覆盖,且与u相连的点所相连的边也会被覆盖,现问将所有道路都覆盖所需最小花费。 思路:这题状...

weixin_30924239的博客 166

【面试系列】软件架构师 高频面试题及详细解答

本文介绍了软件架构师岗位的初级、中级和高级面试题及详细解答,涵盖了系统设计、面向对象设计、分布式系统、云计算技术、性能优化等关键领域。通过这些问题和解答,候选人可以深入理解软件架构师的核心职责和技能要求。此外,文章总结了在面试中需要掌握的常考知识点,包括架构模式、分布式系统管理、安全性、数据管理和DevOps实践。通过掌握这些知识点,软件架构师能够有效设计和指导复杂系统的结构,确保系统的可扩展性、性能和维护性。

在路上的专栏 850

Qt Creator配置MSVC编译环境、调试环境

获取和安装:cdb.exe 在 Debugging tools for Windows 中,而现在已经不单独提供下载,只在Windows SDK 或者Windows Driver Kit里面包含 所以需要下载微软的调试工具,最少需要下载 Windows SDK。在windows上开发,一般使用Qt Creator自带mingw编译器,编译和调试都很方便,安装Qt时勾选后,自动配置完毕。但是有时候我们需要使用MSVC的编译器,这个时候我们没法直接使用,需要配置环境才能使用,以下是配置方案。

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 6988

uva 12093 Protecting Zonk(在某个节点X使用A装置,此时与节点X相连的边都被覆盖)

题意: 有一个n(n<=10000)个节点的无根树。有两种装置A,B,每种都有无限多个。 1.在某个节点X使用A装置需要C1(C1<=1000)的花费,并且此时与节点X相连的边都被覆盖 2.在某个节点X使用B装置需要C2(C2<=1000)的花费,并且此时与节点X相连的边以及与节点X相连的点相连的边都被覆盖 求覆盖所有边的最小花费 思路: dp[u][0]:u没有安装

_zidaoziyan的博客 1106

万字详解YOLOv8网络结构Backbone/neck/head以及Conv、Bottleneck、C2f、SPPF、Detect等模块

YOLOv8是由Ultralytics开发的最先进的目标检测模型,推升了速度、准确性和用户友好性的界限。YOLO这一缩写代表“你只看一次”(You Only Look Once),通过在一次网络传递中同时预测所有边界框,提升了算法的效率和实时处理能力。相比之下,其他一些目标检测技术需要经过多个阶段或过程来完成检测。YOLOv8在流行的YOLOv5架构上进行了扩展,在多个方面提供了改进。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 14万+

UVa 12093 Protecting Zonk

本文研究了在树形结构村庄中放置两种守卫机器人(士兵和中士)的最小成本问题。通过动态规划方法,定义了四种状态来精确描述节点与父节点间的覆盖关系。状态转移考虑了机器人覆盖范围的不同特性,确保所有道路被保护的同时最小化总成本。算法采用树形DFS遍历,时间复杂度为O(N),适用于大规模输入。样例测试验证了方法的正确性和高效性。

寂静山林 990

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【UVa】【DP】12093 Protecting Zonk

UVa 12093 Protecting Zonk 题目 ◇题目传送门◆(由于UVa较慢,这里提供一份vjudge的链接) ◇题目传送门(vjudge)◆ 题目大意 有NNN个节点构成一个树形结构的图。现有两种机器A,B。A的花费为C1C1C_1,B的花费为C2C2C_2。若在某个节点上放一个A机器,则与该节点相连的边被覆盖;若在某节点上放一个B机器,则与该节点相连的边及其相邻节点相连的...

IDDFS 301

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【Uva 12093】Protecting Zonk

【Link】: 【Description】 n个节点的树; 每个节点都可以选择3种 1.覆盖和它相连的边; c1花费; 2.覆盖和它相连的边以及和它相连的点相连的边; c2花费; 3.不进行操作 覆盖所有的边的最小花费; 【Solution】 /* n个节点的树; ...

AWCXV 76

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Uva 12093 Protecting Zonk

一道动态规划的题目,首先要利用DFS将无根树变为有根树。然后从根开始,这个时候就可以分为两种情况来进行考虑:第一种情况是与根相连接的子节点中至少有一个子节点使用的是B装置,第二种情况是与根节点相连接的所有子节点使用的都不是B装置,对于第一种情况,首先递归算出所有的子节点的最小代价之和,然后对于每一个子节点,都尝试去除当前最优的放置方案,强制放置一个B装置得到的新的代价之和,求出所有的新的代价之和的

zju2016的博客 382

UVA - 12093 Protecting Zonk 树状DP

问题 问题就是在一个无根树上,每个点可以放置一个机械,机械有两种C1,C2,C1可以覆盖放置点直接连接的边,C2可以覆盖放置点和相邻点所连接的边,他们的费用不同,问怎么放的代价最小 分析 开始的思路: 这题是树状DP, 如果直接将点u放置的机械种类作为状态,dp[u][0,1,2]分别代表点u不放置,放C1,放C2,的不同状态,1作为DFS开始的节点,会有一些问题(主要是两个),无法解决1-2-3...

zpf1998的博客 146

uva 12093 Protecting Zonk 树形dp

题目大意:有n个城市和n-1条路组成了一个树,现在有花费为c1的机器人A和花费为c2的机器人B,两种机器人都是无限量的,如果在城市u放置机器人A,此时与u连接的边都会被覆盖,如果在城市u放置机器人B,那么与u相连的边都会被覆盖,且与u相连的点所相连的边也会被覆盖,现问将所有道路都覆盖所需最小花费 dp[u][0] :以点u为根的子树下的边全部被覆盖,且没有向u节点上方覆盖 dp[u][

KIDGIN7439的专栏 638

Protecting Zonk UVA - 12093 树形DP

题意:  给定一个有n个节点的无根树,有两种装置A和B,每种都有无限多个。在某个节点X使用A装置需要C1的花费,并且此时与节点X相连的边都被覆盖。在某个节点X使用B装置需要C2的花费,并且此时与节点X相连的边以及与X相连的点相连的边都被覆盖。求覆盖所有边的最小花费。树形DP的题目写多了后这种模板题还是很好想的。。 然而我写(智)的(商)不(捉)多(鸡) 想了一会 想出了个及其复杂的状态转移方程。

lifelike 400

【UVA12093】Protecting Zonk (树形DP)

题意:   给定一个有n个节点的无根树,有两种装置A和B,每种都有无限多个。在某个节点X使用A装置需要C1的花费,并且此时与节点X相连的边都被覆盖。在某个节点X使用B装置需要C2的花费,并且此时与节点X相连的边以及与X相连的点相连的边都被覆盖。求覆盖所有边的最小花费。 分析:   首先无根树可以先dfs确定根。考虑选择装置A和装置B的影响。   装置A只会影响节点u连出去的...

weixin_30550081的博客 64

Uva-12093 Protecting Zonk(较复杂的树形DP)

题意:给定一个有n(n 在某个节点x使用A装置需要C1(C1 在某个节点X使用B装置需要C2(C2 求覆盖所有边的最小花费. 分析:状态有很多种表示方法,f[u][a][b][c] 表示第i个点选了a装置,他父亲选了b装置,c表示它的儿子中是否有选C2装置,或者f[u][a][b][c]表示第i个点选了a装置,他父亲选了b装置,c表示u到fa[u]的边是否被u上边的点覆盖,这

WZJRJ28 443

uva - 12093(树形dp)

就该题目而言,对状态的限定是非常重要的,先找到合适的状态涵盖所有的因素才能为状态转移打下铺垫。 首先,来谈制约因素,该题目的状态必须表示父,子,孙三代边的的覆盖状态,这是为什么,当前节点已经决策,往下走对子节点决策,而子节点最多会覆盖父,子,孙,曾孙,四代边,那么转移到子节点,就至少描述下面三代的覆盖情况。 状态为 0 : 父边点没被覆盖      1 : 父边被覆盖       2

playwfun的专栏 903

ZMQ Arena 实战:ZeroMQ/ZMTP 多语言绑定与传输方式基准测试指南

消息队列是分布式系统中解耦与异步通信的核心组件,而性能评估则决定了中间件选型与调优的方向。在不同语言绑定、传输协议和消息模式下,吞吐量与延迟的差异往往来自底层协议栈实现,而非业务逻辑。ZeroMQ 作为轻量级高性能消息库,其通信语义基于 ZMTP 协议,不同实现的性能表现需要可重复的基准测试来量化。ZMQ Arena 正是为应对这一需求而设计的基准测试工具,它支持多语言绑定、多种传输方式(TCP、IPC、inproc)及消息模式,帮助开发者在选型、参数调优和版本升级回归中获取可靠数据。通过统一配置消息大小、

468
上一篇: UVa1218 Perfect Service
下一篇: UVa1252 Twenty Questions
squee_spoon
博客等级 码龄14年 61粉丝 455原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值