一个国家有N个城市(标号为0~N-1),这N个城市恰好由N-1条道路连接在一起(即N个城市正好构成一个树状结构)。这个国家的所有道路的长度都是1个长度单位。定义:两个城市间的距离是两个城市间的最短路的长度。
现在这个国家想建立一套定位系统,让国家的公民能通过这套系统定位自己所在的城市。该系统由K个有编号的信号站构成,不妨将它们标号为0,1,2,3,...,K-1。每个信号站会放在一个城市中,每个城市最多安放一个信号站,每个信号站将不停的向外界发送信。(值得注意的是,信号站i不一定要安放在城市i中,例如:信号站2可以放在城市3中,也可以放城市4中)对于一个公民来说,如果他在城市X,那么他打开手机定位时,手机将收集K个信号站的信号,并根据这些信息生成一个K个元素的数组Dis[],其中Dis[i]记录着信号站i所在的城市与手机用户所在的城市(这里即为城市X)的距离。手机中的定位软件将根据该Dis[]数组来判断用户所在的城市编号。
由于信号站成本太高,该国家想尽可能少的购买信号站,那么问题来了,该国家最少需要安装多少个信号站才能唯一定位每一个城市?

友情提示:每个城市能被唯一定位的充要条件是,在每一个城市手机能接收到的数组Dis[]是互不相同的。

例如:这个国家有三个城市0,1,2,且链接关系为 0 -- 1 -- 2 (即0、1间有边,1、2间有边)。那么只需要一个基站就可以了。但是该基站需要放在城市0或城市2。如果放在城市0,那么:
在城市0:Dis = {0};
在城市1:Dis = {1};
在城市2:Dis = {2};
显然是可区分的。同理放在城市2中。

但是如果放在城市1中,三个城市的手机用户会得到如下数据:
在城市0:Dis = {1};
在城市1:Dis = {0};
在城市2:Dis = {1};
显然,城市0和城市2所获得的Dis[]数据相同,软件显然无法区分Dis={1}时,用户是在城市0呢?还是在城市2?所以该安放方法不是最佳的。

解题报告:
用时:2h,4WA
这题比较简单,首先要明白叶子节点必须选,因为一对叶子节点,除非在两者之间建立基站,其他不管在它们的爸爸妈妈爷爷奶奶处建立都没有办法区分他们两个,所以只有二选一,但是还有一个决策,记一个点的叶子节点数为\(cnt\),那么如果这个点没有父节点,显然只需要建立\(cnt-1\)个即可,那么如果有父亲节点,这个被独立出来的叶子节点和他的父节点就无法区分,所以还需要决策,所以我们再枚举一个根节点,并且强制根节点要选,那么剩余的这颗子树就可和其区分开了,所以我们只需要保证每一个节点的子树中,只有一个子树没有选即可,代码简短

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>
#define RG register
#define il inline
#define iter iterator
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
using namespace std;
const int N=55;
int head[N],nxt[N<<1],to[N<<1],num=0,n,f[N],tot=0,du[N];
char s[N];
void link(int x,int y){nxt[++num]=head[x];to[num]=y;head[x]=num;}
void dfs(int x,int last){int u,cnt=0;for(int i=head[x];i;i=nxt[i]){u=to[i];if(u==last)continue;dfs(u,x);if(du[u]==1 || !f[u])cnt++;f[x]+=f[u];}if(cnt>1)tot+=cnt-1,f[x]=cnt-1;
}
void work()
{scanf("%d",&n);if(n==1){puts("0");return ;}int ans=N;for(int i=1;i<n;i++){scanf("%s",s+1);for(int j=i+1;j<=n;j++){if(s[j]=='Y')link(i,j),link(j,i),du[i]++,du[j]++;}}for(int i=1;i<=n;i++){memset(f,0,sizeof(f));tot=0;dfs(i,i);ans=Min(tot+1,ans);}printf("%d\n",ans);
}int main()
{work();return 0;
}

转载于:https://www.cnblogs.com/Yuzao/p/7598375.html

51Nod 1314 定位系统相关推荐

  1. 51nod 1617 奇偶数组

    传送门 回来看一眼51nod,发现自己掉到rank4了,赶紧切道题回rank3. 一眼不会做,这种东西应该慢慢找规律吧--然后看到数据范围其实比较小,应该是单次log的,那是不是可以分治啊. #inc ...

  2. APS:大型多模态室内摄像机定位系统

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 小白导读 论文是学术研究的精华和未来发展的明灯.小白决心每天为大家 ...

  3. 51NOD 1773:A国的贸易——题解

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1773 参考1:FWT讲解 https://www.cnblogs.com ...

  4. 某程序员吐槽:女朋友老板给她包了1314元开工红包,正常吗?网友:这是绿包!...

    开工红包到手,几家欢乐几家愁.有个程序员小哥哥的女朋友发了开工红包,但他却没有觉得高兴,这是为什么呢? 原来女朋友的老板给她包了1314元的红包,这个数字似乎有点不太对劲,小哥哥忍不住发帖吐槽:这正常 ...

  5. 北斗芯片服务器,北斗芯片:GPS定位系统,正是再见!你期待吗?

    其实很多人想象的是错误的,北斗卫星其实无法定位终端所在的位置,别的定位卫星也不知道终端在哪里.卫星定位分为有源定位和无源定位,北斗一代是有源定位,二代.三代则支持无源定位.有源定位,终端定位需要通过地 ...

  6. 51nod 1040:最大公约数之和(数论)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1040 给出一个n,求1-n这n个数,同n的最大公约数的和. ...

  7. iPhone地图 实战iPhone GPS定位系统

    原文摘自:成长的路上(Moonlight) 如今,配备GPS功能的移动设备越来越普遍了,使用GPS定位系统,可以精确地定位你当前所在的地理位置,但由于GPS接收机需要对准天空才能工作,因此在室内环境基 ...

  8. (DP)51NOD 1183 编辑距离

    编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除 ...

  9. 斜率小于0的连线数量 51Nod - 1107 (树状数组+离散化)

    二维平面上N个点之间共有C(n,2)条连线.求这C(n,2)条线中斜率小于0的线的数量. 二维平面上的一个点,根据对应的X Y坐标可以表示为(X,Y).例如:(2,3) (3,4) (1,5) (4, ...

最新文章

  1. Java技术体系平台
  2. LeetCode 36有效的数独37解数独(八皇后问题)
  3. Graphpad Prism计算IC50
  4. java json jar包_jsonobject jar包下载
  5. Spring Boot 应用的测试
  6. 后台运行python程序 遇到缓冲区问题
  7. MySQL官方备份_Mysqlbackup 备份详解(mysql官方备份工具)
  8. 前端_网页编程 Ajax加强
  9. asp.net—单例模式
  10. 线段树(区间更新以及统计片段颜色)
  11. Linux 测试端口是否 ping 的方法
  12. 报表系统软件有哪些_报表系统软件功能
  13. Windows 2000 Server Resource Kit CD BT下载地址
  14. dd命令测试硬盘读写速度
  15. 【React】 lazy 和 Suspense
  16. Notepad++的JsonViewer 插件安装失败的解决
  17. 从ACL 2022 Onsite经历看NLP热点
  18. cat /etc/sysconfig/network-scripts/ifcfg-ens33
  19. php2-3v690,php网页版文件浏览器
  20. uniapp 动态获取手机屏幕高度

热门文章

  1. SVN中 “containing working copy admin area is missin
  2. Python学习之函数返回多个值
  3. 3D数学基础:图形与游戏开发---随笔一
  4. PyTorch基础(五)----- torch.cat()方法
  5. STM32开发 -- 可调直流稳压电源
  6. 日常生活 -- 开博一周年
  7. zcmu1710(dp)
  8. 经验分享 | 通过adbd配置漏洞在安卓设备上提升权限
  9. 干货 | 你真的了解 Convolutional Neural Networks 么
  10. .net core 生成html,ASP.NET Core 中如何将 .cshtml 视图文件生成为 .cs 文件