题目传送门

首先题目说得明明白白“形成一个树状结构”,树状DP是没逃了……

在这里我给出的是紫书思路的一种实现,具体请看紫书P282。

d(u,0)d(u,0)d(u,0) 表示以 uuu 为根的子树中,不选 uuu 点能邀请的最大人数。f(u,0)f(u,0)f(u,0) 表示方案是否唯一(1表示唯一,0表示不唯一)。

d(u,1)d(u,1)d(u,1) 表示以 uuu 为根的子树中,选 uuu 点能邀请的最大人数。f(u,1)f(u,1)f(u,1) 表示方案是否唯一。

状态转移方程挺好写的,设 SSS 表示节点 uuu 的集结点集合。

由于选了 uuu, uuu 的所有子节点都不能选:

d(u,1)=∑i∈Sdd(u,1)=\sum_{i\in S}dd(u,1)=∑i∈S​d(iii),当且仅当所有 f(1,0)f(1,0)f(1,0) 都是 111 时 f(u,1)f(u,1)f(u,1) 才是 111。

没选 uuu 就随便了,子节点可选可不选QAQ:

d(u,0)=∑i∈Smax(d(i,0),d(i,1))d(u,0)=\sum_{i\in S}max(d(i,0),d(i,1))d(u,0)=∑i∈S​max(d(i,0),d(i,1)),当且仅当 maxmaxmax 取到的对应的那个 fff 为 111 并且所有 d(i,0)≠d(i,1)d(i,0) \neq d(i,1)d(i,0)​=d(i,1) 时 f(u,0)f(u,0)f(u,0) 才为1。

这里解释一下代码中的 unordered_map, 这是C++11里的容器,是一个没有排序的 map 光看名字就知道,比普通的 map 少一个 log的时间复杂度,底层实现是hash表,虽然此题map也能过。

另外注意字符串的输入,这里不得不用cin牺牲一点读入时间。。。

多测不清空,爆零两行泪!

Code:(C++11)Code:(C++11)Code:(C++11)

#include <cstdio>
#include <iostream>
#include <string>
#include <unordered_map>
#include <vector>
#include <cstring>
#define _for(i, a, b) for (int i = (a); i < (b); i ++)
#define _rep(i, a, b) for (int i = (a); i <= (b); i ++)using namespace std;int cnt;
unordered_map<string, int> m;inline int Hash (string x)//将字符串映射到整数上
{if (m[x] == 0) m[x] = ++ cnt;return m[x];
}vector <int> sons[205];
int d[205][2], f[205][2];inline void dfs(int u)
{d[u][1] = 1;int t = sons[u].size();_for (i, 0, t){auto son = sons[u][i];dfs(son); //根本不用记忆化化,因为本来就是树形结构,根本不会重复d[u][1] += d[son][0];if (d[son][0]) f[u][1] &= f[son][0];//只要一个f[son][0]为0f[u][1]即为0if (d[son][0] < d[son][1])f[u][0] &= f[son][1], d[u][0] += d[son][1];//同理else if (d[son][0] > d[son][1])f[u][0] &= f[son][0], d[u][0] += d[son][0];else d[u][0] += d[son][0], f[u][0] = 0;//两个都一样肯定多解了}
}int main()
{int n, boss;//boss乃大老板也QAQstring ch, ch2;while (1){cnt = 0;m.clear();memset(d, 0, sizeof(d));memset(f, 1, sizeof(f));scanf("%d", &n);if (n == 0) return 0;_rep (i, 1, n) sons[i].clear();cin >> ch;boss = Hash(ch);d[boss][0] = d[boss][1] = 0;_for (i, 1, n){cin >> ch >> ch2;sons[Hash(ch2)].push_back(Hash(ch));}dfs(boss);if (d[boss][1] >= d[boss][0]){printf("%d ", d[boss][1]);if (f[boss][1] && d[boss][1] != d[boss][0]) puts("Yes");//论输出格式的重要性else puts("No");}else{printf("%d ", d[boss][0]);if (f[boss][0]) puts("Yes");else puts("No");}}
}

UVA1220 Hali-Bula的晚会 Party at Hali-Bula相关推荐

  1. poj 3680 Intervals

    给定N个带权的开区间,第i个区间覆盖区间(ai,bi),权值为wi.现在要求挑出一些区间使得总权值最大,并且满足实轴上任意一个点被覆盖不超过K次. 1<=K<=N<=200.1< ...

  2. UVA1220 Hali-Bula的晚会 Party at Hali-Bula 题解

    题目:UVA1220 Hali-Bula的晚会 Party at Hali-Bula DP - 树形DP 一道简单的最大独立集问题,只不过加了一个判断唯一性 我们只需多加一个数组判断唯一性就可以了 设 ...

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

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

  4. 例题 9-13 Hali-Bula 的晚会(Party at Hali-Bula,ACM/ICPC Tehran 2006,UVa1220)

    原题链接:https://vjudge.net/problem/UVA-1220 分类:树形DP 备注:树的最大独立集 #include<bits/stdc++.h> using name ...

  5. 计算机学院元旦晚会主题名称,【2017元旦晚会主题名称】2017年元旦晚会主题_2017学校元旦晚会主题_亲亲宝贝网...

    2017元旦晚会主题策划 一 活动主题: 畅想陕铁,舞动管理 二 活动目的: 时间如白驹过隙,转眼间2017年元旦将至,为庆祝元旦佳节,也为进一步推进我系文艺活动的蓬勃发展,丰富校园文化生活,活跃学习 ...

  6. 2021年春节联欢晚会第三次联排亮点多

    2月5日,<2021年春节联欢晚会>第三次联排在中央广播电视总台一号演播厅如期举行.此次联排以科技手段打造焕然一新的视觉效果,包括采用国际最新的数字影像技术与节目内容互融互通,赋予观众沉浸 ...

  7. 官宣!中央广播电视总台《2021年春节联欢晚会》总导演组公布

    参与了十多届春晚的陈临春导演,对春晚一直抱有特别的情感和信念.他曾担任过2008年.2011年春节联欢晚会总导演,2017年至2020年春节联欢晚会总制片人. ​​8月10日上午,中央广播电视总台举行 ...

  8. 德州职业技术学院计算机系,德州职业技术学院计算机系元旦晚会相声视频

    简介: 去年的这个时候我们似乎已经开始筹备我们的晚会了,那时的心情非常开心,也很激动.我的主持,和奇哥的相声.当时真的感到我很幸运,大家都支持我,我也很感激大家对我的信任,可现在回想起来那似乎已经成了 ...

  9. OPPO R11发布盛典昨晚举行,精彩程度不亚于大型晚会!

    6月10日20:30,"反正都精彩--浙江卫视年中盛典暨OPPO R11新品发布会"在浙江卫视播出,这场发布会可以说是前无古人,OPPO邀请了半个娱乐圈来助阵,只为见证最新拍照手机 ...

最新文章

  1. 在Centos8 中使用Stratis管理本地存储(一)
  2. 项目:IT资源共享资源(登录前端)1
  3. 浩鲸科技基于ChaosBlade的混沌工程实践
  4. 数据库SQL基础知识点
  5. 百度更新算法之后我想说
  6. 单播 广播 组播_【技术解析】关于组播概念那些你需要知道的~
  7. linux ubuntu技术支持电话,Ubuntu 17.04 将在1月13日结束技术支持
  8. virtualbox主机网络管理 未能创建_如何在 VirtualBox 中增加现有虚拟机的磁盘大小 | Linux 中国...
  9. 实现一个Ajax模式的文件上传功能有多难?
  10. python膨胀卷积_python里有没有轻量级的卷积网络库,不需要训练,只想快速前向计算?...
  11. python 阿里云短信接口_python 之阿里云短信服务接入流程短信接口
  12. 安装VMwareTools
  13. 搭建自己的以图搜图系统 (一):10 行代码以图搜图
  14. 换服务器皮肤文件,lol怎么替换皮肤文件
  15. Docker使用注意事项
  16. 100天精通Andriod逆向——第3天:真机环境配置
  17. 在C:\Windows\Fonts下复制自己的字体
  18. 网络流量大数据分析平台(1)
  19. Linux 系统修改环境变量的方法
  20. python-报错集合

热门文章

  1. 这些电影中的科幻构想,已经用AI实现了
  2. PHP正则验证手机号码和座机号码、邮箱正则验证(方法源码)
  3. markdown语法手册附快捷键(10min掌握)
  4. EPIMATE运行时提示 Flexcell.ocx 出错
  5. 《妖灵契》12.1正式上线链游玩家|仙魔首战、冲顶至尊
  6. 参观了他的中式别墅,才懂何为诗意,里面的红木装修,太壕了!
  7. 小咖秀视频解析去水印原理及源码,x-sign签名算法,获得无水印播放地址
  8. Java 常见设计模式 - 装饰模式
  9. 鸿蒙系统文件删除怎么恢复,鸿蒙系统升级后会删除东西吗?鸿蒙系统游戏数据互通吗?...
  10. MySql——MySqlDataAdapter批量更新