树形DP 。 因为不能同时选择一个人和他的直属上司 , 所以需要维护两个值d[u][0]表示不选该节点,d[u][1]表示选择该节点 。   当然,题目还有一个要求,那就是判断解的唯一性, 所以再添加一个数组维护唯一性。  我们不妨分别分析  :  1.d[u][1]的计算 , d[u][1] = sum{d[v][0]} + 1; v是u的子节点,因为要依赖所有子节点的解,所以当且仅当所有f[v][0]==1 时,f[u][1] = 1; 2.d[u][0]的计算, 因为没有选u , 所以每个子节点可以选可以不选, 所以d[u][0] = sum{ max(d[v][0],d[v][1]) } 如果d[v][0] == d[v][1] 那么解不唯一, 其次,如果max取到的值,也就是最终解的一部分,如果f == 0 ,那么方案也不唯一 。

细节参见代码:

#include<bits/stdc++.h>
using namespace std;
int n,d[205][5],f[205][5];
map<string,int> p;
char s[105],boss[105];
vector<int> sons[205];
int dp(int u,int id) {if(d[u][id]!=-1) return d[u][id];int k= sons[u].size();if(k == 0) { //初始化边界if(id == 0) { f[u][0] = 1; return d[u][id] = 0; }else { f[u][1] = 1; return d[u][id] = 1; }}if(id == 1) {d[u][1] = 1; //***bool ok = true;for(int i=0;i<k;i++) {int v = sons[u][i];d[u][1] += dp(v,0);if(f[v][0]!=1) ok = false;}if(ok) f[u][1] = 1;else   f[u][1] = 0;return d[u][1];}else {d[u][0] = 0;bool ok = true;for(int i=0;i<k;i++) {int v = sons[u][i];if(dp(v,0) == dp(v,1)) { ok = false; d[u][0] += d[v][1]; }else if(d[v][0]>d[v][1]) { if(f[v][0]==0) ok = false; d[u][0] += d[v][0]; }else { if(f[v][1]==0) ok = false; d[u][0] += d[v][1]; }}if(ok) f[u][0] = 1;else   f[u][0] = 0;return d[u][0];}
}
int main() {while(~scanf("%d",&n)&&n) {p.clear();memset(d,-1,sizeof(d));scanf("%s",s);p[s] = 0;int cnt = 0;for(int i=1;i<n;i++) {scanf("%s%s",s,boss);if(!p.count(s)) p[s] = ++cnt;if(!p.count(boss)) p[boss] = ++cnt;sons[p[boss]].push_back(p[s]);}int ans ;bool ok ;if(dp(0,0) > dp(0,1)) { ans = d[0][0]; ok = f[0][0]; }else if(d[0][0] == d[0][1]) { ans = d[0][0]; ok = false; }else { ans = d[0][1]; ok = f[0][1]; }printf("%d ",ans);if(ok) printf("Yes\n");else printf("No\n");for(int i=0;i<n;i++) sons[i].clear();}return 0;
}

1220 - Party at Hali-Bula(Hali-Bula 的晚会)相关推荐

  1. 【学时总结】◆学时·VIII◆ 树形DP

    ◆学时·VIII◆ 树形DP DP像猴子一样爬上了树--QwQ ◇ 算法概述 基于树的模型,由于树上没有环,满足DP的无后效性,可以充分发挥其强大统计以及计算答案的能力. 一般来说树形DP的状态定义有 ...

  2. Hali硬件安全工具-串口通讯RS232/485/422/CAN抓包

    1.场景需求 我发现我的CSDN的优点之一就是,每篇文章都有讲清楚起因,平白无故的技术学习是没有根的,没有落地的场景,没有技术的应用,技术本身就是昙花一现. 这次的分享,是Hali硬件安全工具的第一次 ...

  3. Uva 1220,Hali-Bula 的晚会

    题目链接:https://uva.onlinejudge.org/external/12/1220.pdf 题意: 公司n个人,形成一个数状结构,选出最大独立集,并且看是否是唯一解. 分析: d(i) ...

  4. 51NOD 1220 约数之和(杜教筛)

    1220 约数之和 推式子 ∑i=1n∑j=1nd(i,j)=∑i=1n∑j=1n∑x∣i∑y∣j(gcd(x,y)=1)xjy=∑d=1ndμ(d)∑i=1nd∑x∣iix∑j=1nd∑y∣jj=∑ ...

  5. 信息学奥赛一本通 1220:单词接龙 | 1913:【00NOIP普及组】单词接龙 | OpenJudge NOI 2.5 8783 | 洛谷 P1019 [NOIP2000 提高组] 单词接龙

    [题目链接] ybt 1220:单词接龙 ybt 1913:[00NOIP普及组]单词接龙 OpenJudge NOI 2.5 8783:单词接龙 洛谷 P1019 [NOIP2000 提高组] 单词 ...

  6. 信息学奥赛一本通(1220:单词接龙)

    1220:单词接龙 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 5368     通过数: 3159 [题目描述] 单词接龙是一个与我们经常玩的成语接龙相类似的 ...

  7. CodeVS 1220 数字三角形

    题目大意(经典的动态规划题型) http://codevs.cn/problem/1220/ #include <iostream>using namespace std; int n; ...

  8. HDU 1220 正方体问题

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1220 解法一: /* 题解:因为公共点的数目只可能有:0,1,2,4. 很明显我们用总的对数减掉有四个 ...

  9. 肾上腺髓质素 (12-20)|186027-43-0|KWNKWALSR-NH2

    肾上腺髓质素原片段12-20在大鼠和猫体内具有血管抑制活性.肾上腺髓质素原(12-20)(PAMP 12-20)的效力大约比全序列肽低3倍,但血管抑制剂对该片段和全序列肽的反应持续时间相似. 编号: ...

  10. ROHM | 开发出以1220尺寸达到1W业界超高额定功率的分流电阻器“LTR10L”

    有助于各种应用产品的小型化! 全球知名半导体制造商ROHM(总部位于日本京都市)面向车载设备.工业设备和消费电子设备等广泛的应用领域,开发出"LTR系列"的长边电极型分流电阻器&q ...

最新文章

  1. 使用leangoo做多团队敏捷开发项目管理
  2. 程序员在囧途之做私活小记
  3. [19/04/02-星期二] IO技术_字符流分类总结(含字符转换流InputStreamReader/ OutputStreamWriter,实现字节转字符)...
  4. C# 调用Excel 出现服务器出现意外情况. (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT)
  5. matlab 矩阵数据生成.csv表格
  6. 防止html标签转义
  7. 【ArcGIS微课1000例】0008:ArcGIS中如何设置相对路径?(解决图层前红色的感叹号)
  8. 安装jdk步骤rpm_jenkins rpm包方式安装
  9. 什么是中台业务架构?
  10. linux开放mysql远程连接_Linux开启MySql远程连接
  11. Java中类加载器获取的两种方式
  12. Cerebro 插件之电影磁力搜索神器
  13. 关于重构中的“函数尽量小”的负作用
  14. DPDK示例l3fwd性能测试
  15. maven安装配置之后mvn命令仍然无效的解决办法
  16. cad插件_CAD插件自动标注安装教程
  17. 程 | 深度学习 + OpenCV,Python 实现实时视频目标检测 机器之心 09-21
  18. 无线网为何显示无法上网络连接服务器,wlan显示已连接不可上网怎么办_wlan显示已连接但无法访问互联网怎么解决...
  19. Android视频编辑器(二)预览、录制视频加上水印和美白磨皮效果
  20. CASS9.2启动提示连接数据库失败的解决方案

热门文章

  1. util是什么意思计算机英语,utill是什么意思
  2. CSS冷门属性 mix-blend-mode 制作文字镂空效果
  3. 结合百度云平台和微信公众平台开发(三)
  4. New York City Taxi Trip Duration纽约出租车大数据探索(报告版
  5. QQ录屏的文件保存的位置
  6. notepadpython插件_用NotePad++写python及自动补全
  7. 社交媒体的阴暗面:是Facebook让你抑郁的吗?
  8. 英文求职信计算机网络,计算机网络技术英文求职信范文 .doc
  9. soapui工具_Java 开发者不容错过的 12 种高效工具
  10. compareto java date_java中compareTo比较两个日期大小