树形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. 用好ASP.NET 2.0的URL映射
  2. hdu5108枚举因子求最小的m
  3. vue-devtools 的安装
  4. csv与json互转_CSV文件转JSON
  5. jmeter分布式测试配置
  6. HDU 3400 Line belt【三分法】
  7. python学习-综合练习四(最大公约数、最小公倍数、生成日历、递归调用、字符串)
  8. git与svn的区别 ?Git 与 SVN那个更好?
  9. 第69课 胡萝卜与骨头
  10. 让你更好的使用jQuery插件
  11. Linux安装Nginx1.7.4、php5.5.15和配置
  12. java 中如何临时保存某输入值_java笔记临时存放
  13. stm32实用技巧:JLINK接口定义和使用JTAG或SW下载程序
  14. Chrome浏览器语音自动播放功能
  15. 一加手机怎么root权限_一加手机怎么获取root权限?
  16. BLE中GATT理解
  17. 1008:美元和人民币
  18. 微信小程序 - 页面跳转传参 JSON.parse 解析失败报错(SyntaxError: Unexpected end of JSON input)解决方案
  19. Kubernetes 固定 Pod IP 地址方法
  20. N76E003 学习一 点亮LED

热门文章

  1. VMware ESXi 7.0 U3k Unlocker OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版)
  2. linux运维工程师培训课程_Linux系统资深运维工程师的进阶秘籍
  3. 8_进程替换execlp
  4. 小米带鱼屏设置双屏显示(左右分屏、半屏显示)分辨率错误的解决方案
  5. PS如何制作超酷3D字效果
  6. datetemp oracle 转秒数_user用户AppDate\Local\Temp文件恶性增长,直到撑爆磁盘
  7. 逃不开的网络抽奖,过不去的虚假广告
  8. 《设计的品格 探索×呈现×进化的InDesign美学》—第1课1.1节文字初步
  9. 使用学生账号来激活使用Jetbrains全家桶
  10. FoveaBox:Beyond Anchor-based Object Detector