POJ-3659 Cell Phone Network

[树形DP] poj 3659 Cell Phone Network 最小支配集,求最小的点集覆盖所有的点。/** [树形DP] poj 3659 Cell Phone Network 给定一棵树,求最小支配集 dp[i][0] = sum(min(dp[s][2],dp[s][1]))自己没被选,父节点被选中 dp[i][1] = sum(min(dp[s][1],dp[s][2]))自己没被选,某儿子结点被选中 dp[i][2] = sum(min(dp[s][ 阅读详情

题目链接:
POJ-3659
题意: 给你一棵树,在树上装一些信号搭,有信号搭的节点可以使得自己和相邻的节点有信号,问最小安装多少个节点使得树上任意一个点都能有信号。
题解:这个就是求最小支配集,用树形dp一下就好。
dp[u][0] 代表不取i节点,靠子节点覆盖,
dp[u][1]代表去u节点 ,
dp[u][2]代表不取u节点,靠父节点覆盖

代码如下:

#include<iostream>
#include<vector>
#include<cstdio>
using namespace std;
int a[60006];
int dp[60006][3];//dp[u][0] 代表不取i节点,靠子节点覆盖,dp[u][1]代表去u节点 ,dp[u][2]代表不取u节点,靠父节点覆盖 
int vis[60006];
vector<int>v[60006];
void dfs(int u,int fa ,int sum)
{
	if(v[u].size()==0&&sum)
	{
		dp[u][0]=0;
		dp[u][1]=1;
		return ;
	}
	dp[u][0]=0;dp[u][1]=1;dp[u][2]=0;	
	int flag=0;
	for(int i=0;i<v[u].size();i++)
	{
		int vv=v[u][i];
		if(vv==fa)
		continue;
		dfs(vv,u,sum+1);
	
		if(dp[vv][0]>=dp[vv][1])
		{
			dp[u][0]+=dp[vv][1];
			flag=1;
		}
		else
		{
				dp[u][0]+=dp[vv][0];
		}
		dp[u][1]+=min(dp[vv][2],min(dp[vv][0],dp[vv][1]));
		dp[u][2]+=min(dp[vv][0],dp[vv][1]);
	}	
	if(!flag)//至少保证有一个子节点是取了的,如果都没取,加一个节点。 
	dp[u][0]++;
	return ;
}
int main()
{
	int n,m,u,vv,t;
		cin>>n;
		if(n==1){
			cout<<1<<endl;
			return 0;
		}
		for(int i=0;i<=n;i++)
		v[i].clear();
		for(int i=1;i<n;i++)
		{
			scanf("%d%d",&u,&vv);	
			v[u].push_back(vv);
			v[vv].push_back(u);
		}
		dfs(1,-1,0);
		int ans=min(dp[1][1],dp[1][0]); 
		cout<<ans<<endl;
	return 0;
}
混沌系统在图像加密中的应用(二维离散Hénon混沌映射) Hénon映射是一种二维离散时间动力系统,由美国数学家Michel Hénon在1976年引入。它是混沌动力系统中的经典模型之一,具有简单的形式和复杂的行为。 阅读详情

相关推荐

从《新程序员》系列看程序员职业发展趋势与成长路径

在信息技术日新月异的当下,软件开发行业蓬勃发展,程序员作为行业的核心力量,其成长与发展路径备受瞩目。《新程序员》系列杂志应运而生,以其前瞻性的视角、丰富多元的内容,为广大程序员尤其是新程序员提供了洞察行业趋势、学习前沿技术、汲取前辈经验的宝贵窗口。该系列杂志由优快云精心打造,自推出以来,便在开发者群体中引发了强烈反响。《新程序员》系列内容涵盖了从基础技术知识的深入解读,到行业前沿趋势的精准预测;从优秀开发者的成长历程分享,到各大企业数字化转型的实践案例剖析等多个维度。

AllenLV的博客 2259

POJ - 3659 Cell Phone Network (树形DP && 最小支配集)

题目链接:http://poj.org/problem?id=3659 题目分析 题意:给出一棵树,需要在这棵树的结点上安装通信装备,每个通信装备可以覆盖当前结点和所有和这个结点直接相连的结点,问安装最少多少个通信装备可以覆盖整棵树。 这个题目可以说是树形DP的题目,也可以是最小支配集的题目,我们用下列变量记录数据 1)dp [ u ] [ 0 ] 表示在结点 u 不安装设备,但父结...

天际苍穹的博客 289

ShardingSphere分库分表教程,java后端开发面试题

???? 简介:Java领域优质创作者????、优快云哪吒公众号作者✌ 、Java架构师奋斗者???? ???? 扫描主页左侧二维码,加入群聊,一起学习、一起进步 ???? 欢迎点赞 ???? 收藏 ⭐留言 ???? 目录 一、分库分表 二、分库分表的方式 1、垂直分表 2、垂直分库 3、水平分表 4、水平分库 三、分库分表带来的问题 1、学习成本问题 2、事务问题 3、跨节点join问题 4、跨节点的count、order by、group by以及聚合函数问题 5、数据迁移、容量规划、扩

m0_64205716的博客 3017

poj3659 Cell Phone Network(树形dp)

树的最小支配集; 给一颗树,每个节点可以覆盖和他相连的所有节点,问用最少的点把所有的点覆盖完。 比poj 1463难,关键是思考要全面 dp[u][0]表示u的子树及以下的结点全部被覆盖,但u被自己覆盖; dp[u][2]表示u的子树及以下的结点全部被覆盖,但u被自己的父亲结点覆盖。 dp[u][1]表示u的子树及以下的结点全部被覆盖,但u被自己的儿子结点覆盖。 dp[u][0]+=m...

KXL5180的博客 261

MATLAB实战:手把手教你实现Gardner环路位同步(附完整代码)

本文通过MATLAB实战,详细讲解了Gardner环路位同步算法的原理与实现。内容涵盖插值滤波器、定时误差检测、环路滤波器与数控振荡器等核心模块,并提供完整代码和调试技巧,帮助读者掌握数字通信中关键的符号定时同步技术。

weixin_29048775的博客 175

TM1621/HT1621 段码LCD驱动器

TM1621 LCD 驱动器

qq_45325304的博客 1万+

POJ-3659 Cell Phone Network(图的最小支配集+树形dp+处理点)

Cell Phone Network Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7241   Accepted: 2581 Description Farmer John has decided to give each of his cows a cell phone in hop...

碳酸钙的01妖精的博客 620

Windows 10下用VS2022编译AFSIM 2.9.0的完整避坑指南

本文提供了在Windows 10系统下,使用Visual Studio 2022编译AFSIM 2.9.0仿真框架的详细指南。文章系统梳理了从环境准备、CMake配置、编译链接到安装打包的全流程,并重点针对编译过程中常见的文件编码、命名空间冲突等高频错误提供了具体解决方案,旨在帮助开发者高效避坑,顺利完成AFSIM在Windows平台上的构建。

weixin_28839549的博客 549

POJ 3659——Cell Phone Network

Cell Phone Network Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4416   Accepted: 1562 Description Farmer John has decided to give each of his cows a cel

蛤蛤~ 858

【深度学习】脸部修复,CodeFormer,论文,实战

Blind face restoration是一个高度 ill-posed 的问题,通常需要辅助引导来 1) 改善从降级输入到期望输出的映射,或者 2) 补充在输入中丢失的高质量细节。在本文中,我们展示了在一个小的代理空间中学到的离散码本先验可以通过将盲目的面部恢复建模为 a code prediction task来大大减少恢复映射的不确定性和模糊性,同时为生成高质量面部提供丰富的视觉元素。

q742971636的博客 2995

带洞多边形如何分成凸多边形集合,对多边形进行凸分解?

摘要: 凸分解是计算几何中的经典问题,分为三角化和凸分解两种方法。三角化将带洞多边形转换为简单多边形并分割为三角形,常用算法包括耳剪法、单调多边形三角化等。凸分解则生成更少但更大的凸多边形,常用Hertel-Mehlhorn算法或基于凹点的递归切割。实际应用中建议使用CGAL、Poly2Tri等成熟库处理。三角化适合图形渲染,凸分解更适用于物理引擎和路径规划。关键步骤包括数据校验、选择合适的算法及后处理优化。

插件开发 355

POJ 3659 Cell Phone Network

POJ 3659 Cell Phone Network Description Farmer John has decided to give each of his cows a cell phone in hopes to encourage their social interaction. This, however, requires him to set up cell

CYCKCN的博客 477

VIVADO IP核之FIR插值器多相滤波仿真

网络上有许多文章介绍FIR低通滤波器的使用,包括仿真。关于FIR低通滤波器的使用,我之前的文章已经介绍过了,本文将继续深入介绍FIR插值器多相滤波的使用方法,并将FIR插值多相滤波的结果与MATLAB仿真计算的结果比较,验证了FIR插值器多相滤波使用正确。

m0_66360845的博客 3383

poj 3659 Cell Phone Network 贪心

这个题目本来应该用简单的树形dp来做的 但是一开始就想错了 先用了统计叶子节点的做法 但是因为中间会出现一些已经亮了但是没有建造灯塔的点 最后就用贪心一贪到底了 具体做法见代码 #include #include #include using namespace std; const int maxn=11111; struct {     int next,to,ture; }e[maxn

yrleep的专栏 700

怀旧版电脑GBC模拟器

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

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

poj-3659 Cell Phone Network(最小支配集+贪心)

http://poj.org/problem?id=3659 Description Farmer John has decided to give each of his cows a cell phone in hopes to encourage their social interaction. This, however, requires him to se...

weixin_30299539的博客 170

WINCC7.3破解文件

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

POJ3659 Cell Phone Network

POJ3659 Cell Phone Network Time Limit:1000MS Memory Limit:65536K Total Submissions:3782 Accepted:1305 Description Farmer John has decided to give each of his cows...

weixin_30497527的博客 145

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

poj3659[USACO2008,Jan]Cell Phone Network手机网络

题目链接:http://poj.org/problem?id=3659 题目大意: 题解: f[x][0]表示x不选但被覆盖.f[x][1]表示x选.f[x][2]表示x不选且没有被覆盖。(保证孩子们都安全) f[x][0]就是至少有一个孩子被选。f[x][1]的孩子就随便啊哪种小选哪种。f[x][2]的孩子都不选但要保证安全那就只能是f[y][0]。 ...

219

poj 3659 Cell Phone Network 树型DP

题目:poj 3659 Cell Phone Network 题意:农夫给他的每个牛发另一个手机(有点扯),现在要在农场建设信号塔以便所有的牛可以相互联系,每个信号塔可以供和他相连的农场使用,所有农场形成一颗树,问要达到要求最少建塔的数量。也就是给一颗树,每个节点可以覆盖和他相连的所有节点,现在问你用最少的点把所有的点覆盖完。 这个题目和poj1463有点相似,poj1463是用点覆盖边,相对...

qq_39861441的博客 222

poj 3659-Cell Phone Network(树的最小支配集)

题目链接:http://poj.org/problem?id=3659 题目描述: 给你一棵无向树,问你最少选多少个点,可以使选中的点和剩余的所有其他的点都有边相连。 (一个点被选中,它自己和与它相邻的点都算有边相连) 解题报告: 一.贪心( O(n) ) 贪心,随便找一个根,前序遍历树。 然后从叶子开始遍历,对于当前还未被访问的结点,如果其父亲还未被选...

weixin_30906425的博客 170

POJ 3659 Cell Phone Network 最小支配集

题意:每个牧场的电塔可以覆盖与该牧场相邻的电塔,为了让所有牛都可以打电话,求建的电塔的最小数量 思路:即求一棵树的最小支配集(最少的能够覆盖所有点的点数) 贪心策略:先对树做一遍dfs,之后根据dfs的逆序对节点进行标记,s[i]表示该点已被覆盖,set[i]表示该点在最小支配集里,首先对子节点判断,若未被覆盖,则判断其父节点是否在支配集里,若不在,则将其放入支配集,覆盖该点、该点父节点、父节点的...

qq_42397248的博客 220

POJ 3659 Cell Phone Network(树形DP)

Description 给出一棵点数为n的树,求这棵树的最小点覆盖 Input 第一行为一整数n表示树的点数,之后n-1行每行两个整数a和b表示树上a和b之间有一条边 Output 输出这棵树的最小点覆盖 Sample Input 5 1 3 5 2 4 3 3 5 Sample Output 2 Solution dp[i][0]表示i属于支配集,并且以i为根的子树都

ZSQ 731

【POJ 3659】Cell Phone Network

Cell Phone Network Time Limit:1000MS Memory Limit:65536K Total Submissions:6012 Accepted:2163 Description Farmer John has decided to give each of his cows a cell ...

weixin_30652879的博客 86
上一篇: hdu 5934
下一篇: tcp和udp的区别
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值