UVA1220 Hali-Bula的晚会 Party at Hali-Bula
题目传送门
首先题目说得明明白白“形成一个树状结构”,树状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∈Sd(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∈Smax(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相关推荐
- poj 3680 Intervals
给定N个带权的开区间,第i个区间覆盖区间(ai,bi),权值为wi.现在要求挑出一些区间使得总权值最大,并且满足实轴上任意一个点被覆盖不超过K次. 1<=K<=N<=200.1< ...
- UVA1220 Hali-Bula的晚会 Party at Hali-Bula 题解
题目:UVA1220 Hali-Bula的晚会 Party at Hali-Bula DP - 树形DP 一道简单的最大独立集问题,只不过加了一个判断唯一性 我们只需多加一个数组判断唯一性就可以了 设 ...
- Hali硬件安全工具-串口通讯RS232/485/422/CAN抓包
1.场景需求 我发现我的CSDN的优点之一就是,每篇文章都有讲清楚起因,平白无故的技术学习是没有根的,没有落地的场景,没有技术的应用,技术本身就是昙花一现. 这次的分享,是Hali硬件安全工具的第一次 ...
- 例题 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 ...
- 计算机学院元旦晚会主题名称,【2017元旦晚会主题名称】2017年元旦晚会主题_2017学校元旦晚会主题_亲亲宝贝网...
2017元旦晚会主题策划 一 活动主题: 畅想陕铁,舞动管理 二 活动目的: 时间如白驹过隙,转眼间2017年元旦将至,为庆祝元旦佳节,也为进一步推进我系文艺活动的蓬勃发展,丰富校园文化生活,活跃学习 ...
- 2021年春节联欢晚会第三次联排亮点多
2月5日,<2021年春节联欢晚会>第三次联排在中央广播电视总台一号演播厅如期举行.此次联排以科技手段打造焕然一新的视觉效果,包括采用国际最新的数字影像技术与节目内容互融互通,赋予观众沉浸 ...
- 官宣!中央广播电视总台《2021年春节联欢晚会》总导演组公布
参与了十多届春晚的陈临春导演,对春晚一直抱有特别的情感和信念.他曾担任过2008年.2011年春节联欢晚会总导演,2017年至2020年春节联欢晚会总制片人. 8月10日上午,中央广播电视总台举行 ...
- 德州职业技术学院计算机系,德州职业技术学院计算机系元旦晚会相声视频
简介: 去年的这个时候我们似乎已经开始筹备我们的晚会了,那时的心情非常开心,也很激动.我的主持,和奇哥的相声.当时真的感到我很幸运,大家都支持我,我也很感激大家对我的信任,可现在回想起来那似乎已经成了 ...
- OPPO R11发布盛典昨晚举行,精彩程度不亚于大型晚会!
6月10日20:30,"反正都精彩--浙江卫视年中盛典暨OPPO R11新品发布会"在浙江卫视播出,这场发布会可以说是前无古人,OPPO邀请了半个娱乐圈来助阵,只为见证最新拍照手机 ...
最新文章
- 在Centos8 中使用Stratis管理本地存储(一)
- 项目:IT资源共享资源(登录前端)1
- 浩鲸科技基于ChaosBlade的混沌工程实践
- 数据库SQL基础知识点
- 百度更新算法之后我想说
- 单播 广播 组播_【技术解析】关于组播概念那些你需要知道的~
- linux ubuntu技术支持电话,Ubuntu 17.04 将在1月13日结束技术支持
- virtualbox主机网络管理 未能创建_如何在 VirtualBox 中增加现有虚拟机的磁盘大小 | Linux 中国...
- 实现一个Ajax模式的文件上传功能有多难?
- python膨胀卷积_python里有没有轻量级的卷积网络库,不需要训练,只想快速前向计算?...
- python 阿里云短信接口_python 之阿里云短信服务接入流程短信接口
- 安装VMwareTools
- 搭建自己的以图搜图系统 (一):10 行代码以图搜图
- 换服务器皮肤文件,lol怎么替换皮肤文件
- Docker使用注意事项
- 100天精通Andriod逆向——第3天:真机环境配置
- 在C:\Windows\Fonts下复制自己的字体
- 网络流量大数据分析平台(1)
- Linux 系统修改环境变量的方法
- python-报错集合
热门文章
- 这些电影中的科幻构想,已经用AI实现了
- PHP正则验证手机号码和座机号码、邮箱正则验证(方法源码)
- markdown语法手册附快捷键(10min掌握)
- EPIMATE运行时提示 Flexcell.ocx 出错
- 《妖灵契》12.1正式上线链游玩家|仙魔首战、冲顶至尊
- 参观了他的中式别墅,才懂何为诗意,里面的红木装修,太壕了!
- 小咖秀视频解析去水印原理及源码,x-sign签名算法,获得无水印播放地址
- Java 常见设计模式 - 装饰模式
- 鸿蒙系统文件删除怎么恢复,鸿蒙系统升级后会删除东西吗?鸿蒙系统游戏数据互通吗?...
- MySql——MySqlDataAdapter批量更新