Party at Hali-Bula(树形dp)

保姆级避坑指南:用IWR6843ISK毫米波雷达实现区域检测,从软件安装到可视化调试全流程 本文提供IWR6843ISK毫米波雷达区域检测的全流程实战指南,涵盖环境搭建、固件烧录、可视化工具配置及性能优化等关键步骤。重点解决软件版本兼容性、烧录失败等常见问题,帮助开发者高效实现精准区域检测,避免开发过程中的常见陷阱。 阅读详情

Dear Contestant,
I’m going to have a party at my villa at Hali-Bula to celebrate my retirement from BCM. I wish I could invite all my co-workers, but imagine how an employee can enjoy a party when he finds his boss among the guests! So, I decide not to invite both an employee and his/her boss. The organizational hierarchy at BCM is such that nobody has more than one boss, and there is one and only one employee with no boss at all (the Big Boss)! Can I ask you to please write a program to determine the maximum number of guests so that no employee is invited when his/her boss is invited too? I’ve attached the list of employees and the organizational hierarchy of BCM.

Best,
-Brian Bennett

P.S. I would be very grateful if your program can indicate whether the list of people is uniquely determined if I choose to invite the maximum number of guests with that condition.
Input
The input consists of multiple test cases. Each test case is started with a line containing an integer n(1≤n≤200) , the number of BCM employees. The next line contains the name of the Big Boss only. Each of the following n - 1 lines contains the name of an employee together with the name of his/her boss. All names are strings of at least one and at most 100 letters and are separated by blanks. The last line of each test case contains a single 0.
Output
For each test case, write a single line containing a number indicating the maximum number of guests that can be invited according to the required condition, and a word Yes or No, depending on whether the list of guests is unique in that case.
Sample Input
6
Jason
Jack Jason
Joe Jack
Jill Jason
John Jack
Jim Jill
2
Ming
Cho Ming
0
Sample Output
4 Yes
1 No
n个人,有上司个员工关系,上司来了,员工就不能来,员工来了,上司就不来,问最多邀请多少人,并且最多人数的方案是否唯一。

典型的树形dp,dp[0][i]表示不选第i个人,dp[1][i]表示选第i个人。
1,如果选第i个人,那么dp[1][j] = sum(dp[0][k])k是他的直系下属;
2,如果不选,那么dp[0][j] = 1 + sum(max(dp[0][k],dp[1][k])k是直系下属;
下面讨论是否唯一。
1,如果不选第i个人,dp[0][k]中只要有一个不唯一,那么他就不唯一;
2,如果选第i个人,dp[1][k]和dp[0][k]中比较大的决定状态,如果dp[0][k] = dp[1][k],那么他肯定不唯一。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
#include<vector>
#include<algorithm>
#include<string>
#include<cmath>
#include<set>
#include<map>
#include<vector>
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int maxn = 1005;
vector<int>vt[205];
int dp[2][205],leap[2][205];
int f(int x,int y)
{
    if(dp[x][y] != -1)return dp[x][y];
    if(!vt[y].size())
    {
        dp[0][y] = 0;
        dp[1][y] = 1;
        leap[0][y] = leap[1][y] = 0;
        return dp[x][y];
    }
    dp[0][y] = 0;
    for(int i = 0;i < vt[y].size();i++)//00000000
    {
        int e = vt[y][i];
        f(0,e);f(1,e);
        if(dp[0][e] > dp[1][e])
        {
            dp[0][y] += dp[0][e];
            if(leap[0][e])leap[0][y] = 1;
        }
        else if(dp[0][e] < dp[1][e])
        {
            dp[0][y] += dp[1][e];
            if(leap[1][e])leap[0][y] = 1;
        }
        else
        {
            dp[0][y] += dp[0][e];
            leap[0][y] = 1;
        }
    }
    dp[1][y] = 1;
    for(int i = 0;i < vt[y].size();i++)
    {
        int e = vt[y][i];
        dp[1][y] += dp[0][e];
        if(leap[0][e])leap[1][y] = 1;
    }
    return dp[x][y];

}
int main()
{
    #ifdef LOCAL
    freopen("C:\\Users\\ΡΡ\\Desktop\\in.txt","r",stdin);
    //freopen("C:\\Users\\ΡΡ\\Desktop\\out.txt","w",stdout);
    #endif // LOCAL
    int n;
    while(scanf("%d",&n) != EOF)
    {
        if(!n)break;
        for(int i = 1;i <= n;i++)vt[i].clear();
        map<string,int>mp;
        string a,b;
        int cnt = 1;
        cin >> a;
        mp[a] = cnt++;
        for(int i = 1;i < n;i++)
        {
            cin >> a >> b;
            if(!mp[a])mp[a] = cnt++;
            if(!mp[b])mp[b] = cnt++;
            int u = mp[b];
            vt[u].push_back(mp[a]);
        }
        memset(leap,0,sizeof(leap));
        for(int i = 1;i <= n;i++)
            dp[0][i] = dp[1][i] = -1;
        f(0,1);
        f(1,1);
        if(dp[0][1] > dp[1][1])
        {
            printf("%d",dp[0][1]);
            if(leap[0][1])
                printf(" No\n");
            else
                printf(" Yes\n");
        }
        else if(dp[0][1] == dp[1][1])
        {
            printf("%d No\n",dp[1][1]);
        }
        else
        {
            printf("%d",dp[1][1]);
            if(leap[1][1])
                printf(" No\n");
            else
                printf(" Yes\n");
        }
    }
    return 0;
}
保姆级教程:用OSSH免费版+FreeRADIUS+FreeAC NAC,从零搭建一套企业级无线Portal认证系统 本文提供了一套基于OSSH免费版、FreeRADIUS和FreeAC NAC的企业级无线Portal认证系统搭建教程。从环境规划、核心组件安装到认证策略与用户管理,详细介绍了如何利用开源工具构建高效、安全的认证体系,特别适用于预算有限但需求严格的企业场景。 阅读详情

相关推荐

一个三极管和稳压管构成的简易稳压电源

一、对电压精度要求不高的场所可以使用本文中所述的简易稳压电源(电流变化引起 的基极-发射极的压降 变化 对输出电压来说可以容忍)二、根据负载实际需求选择三极管,不同的三极管集电极电流不同,电流放大倍数不同(1、尽量选择负载电流(iC 或 iE)上限时,hFE仍然比较理想的三极管,2、一般三极管对基极电流没有限制,可以适当调整基极电流以获得所需输出电流)

五花带点肉 1万+

Party at Hali-Bula(树形DP+判断方案数是否唯一)

Party at Hali-Bula UVA - 1220 题意:公司里有n(n<=200)个人形成一个树状结构, 要求尽量选多的人,但不能同时选择一个人和他的直属上司,文最多能选多少人,以及是否方案唯一。 1 //dp[x][0]表示不选X节点能达到的最大人数,dp[x][1]表示选x节点的最大人数 2 //f数组含义和dp基本一致,f[x][0]表示如果不选...

weixin_30448603的博客 188

Go语言集成Ollama本地大模型:gollama库实战指南

在当今的AI应用开发中,大型语言模型(LLM)的集成已成为关键技术。其核心原理是通过API调用,将自然语言处理能力嵌入到各类应用中。从技术价值看,本地化部署的LLM解决了数据隐私、网络延迟和持续成本三大痛点,尤其适合处理敏感数据或对实时性要求高的场景。在工程实践中,开发者常使用专门的客户端库来简化与模型服务的交互,例如通过封装REST API、提供类型安全接口和流式处理支持,从而提升开发效率和代码健壮性。具体到Go语言生态,结合Ollama这一流行的本地大模型运行工具,可以实现完全离线、低延迟的AI功能集成

weixin_28728443的博客 604

Uva 1220 Party at Hali-Bula(最大独立子集问题)

题目大意: 给一个图,要求相邻节点不能同时选择,求最多能选出多少个节点,其次,判断最大节点数的情况是否唯一。 思路: 即求最大独立子集。在此基础上再判断情况唯一就行。 反思: 起初写了一个暴力判断情况唯一的,再一个节点下枚举判断每一个子节点是否情况唯一。这个代码再poj和hdoj上都过了,再uva上超时了,索性照着紫书上的方法再开一个vis数组再做一次dp。紫书开了一个二维数组a[i][0/1]来表示i节点选或不选得到的结果。如果不开二维数组的话,也可以开两个数组s[i],gs[i],分别记录子节点的答案和

qq_41201328的博客 282

macOS 12.7.6部署Ollama+Dify避坑指南

本文介绍了在macOS 12.7.6系统下部署Ollama和Dify的详细步骤及避坑指南。主要内容包括:1)关闭系统完整性保护(SIP)以允许修改系统目录;2)安装特定版本的Docker(2.1.0.5)和docker-compose(v2.38.2)以避免兼容性问题;3)配置Ollama服务并下载nomic-embed-text和deepseek-r1:7b模型;4)针对macOS调整Dify的docker配置文件,包括延长超时时间、修改存储路径、增加资源限制等关键设置。文中提供了完整的命令操作步骤和配置

Hi20240217的博客 3101

ArcFace vs 传统算法:实测MTCNN+ArcFace在PyCharm中的识别准确率(含完整对比数据)

本文通过PyCharm开发环境实测MTCNN+ArcFace组合在人脸识别中的性能表现,并与传统算法进行多维度对比。实验数据显示,ArcFace在LFW数据集上达到99.83%的准确率,显著优于传统方法。文章还提供了完整的代码实现和工程优化建议,为开发者提供实用的技术参考。

醉三国 233

HDU 1412 参加聚会 (map+树形dp)

题目大意: n个人形成一个关系树,每个节点代表一个人,节点的根表示这个人的唯一的直接上司,只有根没有上司。要求选取一部分人出来,使得每2个人之间不能有直接的上下级的关系, 求最多能选多少个人出来,并且求出获得最大人数的选人方案是否唯一。 前半部分很容易求得,直接一个树形DP,后面的判断最优解是否唯一比较难搞。。 看了roba的ppt顿时恍然大悟。   §

AK_HuangYC的博客 481

基于AI大模型实现自然语言转SQL、SQL解释、SQL优化和SQL转换

随着大数据和人工智能技术的发展,数据分析和数据挖掘在各行各业中的应用越来越广泛。SQL(Structured Query Language)作为关系数据库的查询语言,是数据分析的重要工具。然而,SQL语言的复杂性和专业性使得许多非技术背景的用户难以直接使用,阻碍了数据的广泛利用。为了降低SQL的使用门槛,许多研究者和企业开始探索如何通过自然语言处理(NLP)技术,将自然语言转化为SQL查询语句,从而让用户可以通过自然语言与数据库进行交互。

AI天才研究院 2239

【树形DP】Party at Hali-Bula

Party at Hali-Bula http://acm.hdu.edu.cn/showproblem.php?pid=2412 Problem Description Dear Contestant, I'm going to have a party at my villa at Hali-Bula to celebrate my retirement from

Ted's 游乐园 1399

高级技能-高可用和容灾-两地三中心、异地多活架构

两地三中心和异地多活是当前主流的跨地域高可用架构方案。两地三中心通过生产中心、同城灾备和异地灾备的组合,提供多级容灾能力,适合对数据安全要求高的行业。异地多活则采用单元化设计,多个站点同时服务,提升资源利用率,但需解决网络延迟、数据冲突等挑战。两种架构在RTO/RPO、一致性、改造成本等方面各具特点,企业应根据业务规模、一致性要求和预算进行选择,可考虑从同城双活起步,逐步向异地多活演进。混合架构可能是平衡容灾与多活的务实方案。

zhongjianfeng100的博客 168

OpenClaw终于有了图形界面,一键安装使用你的24小时AI 研究助手!

ClawX是连接强大 AI 智能体与普通用户之间的桥梁。基于OpenClaw构建,它将命令行式的 AI 编排转变为易用、美观的桌面体验——无需使用终端。无论是自动化工作流、连接通讯软件,还是调度智能定时任务,ClawX 都能提供高效易用的图形界面,帮助你充分发挥 AI 智能体的能力。ClawX 预置了最佳实践的模型供应商配置,原生支持 Windows 平台以及多语言设置。当然,你也可以通过设置 → 高级 → 开发者模式来进行精细的高级配置。

Maynor的博客 3391

UVa 1220 Party at Hali-Bula (树形DP,最大独立集)

题意:公司有 n 个人形成一个树形结构,除了老板都有唯一的一个直系上司,要求选尽量多的人,但不能同时选一人上和他的直系上司,问最多能选多少人,并且是不是唯一的方案。 分析:设d(u,0),f(u,0)是以u为根的子树中不选u点时能够得到的最大人数和表示方案唯一【f(u,0)表示方案唯一,f(u,1)表示方案不唯一】,d(u,1),f(u,1)表示选u点时能够得到的最大人数和表示方案唯一。转移方程...

常胜将军的博客 392

【二】MADDPG多智能体算法实现(parl)【追逐游戏复现】

论文全称:Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments 论文原文:https://download.youkuaiyun.com/download/sinat_39620217/16203960 论文翻译:https://blog.youkuaiyun.com/qiusuoxiaozi/article/details/79066612 ...

丨汀、的博客 2万+

[poj 3342]Party at Hali-Bula 树形dp

题目链接:http://poj.org/problem?id=3342 Party at Hali-BulaTime Limit: 2000MS Memory Limit: 65536K Total Submissions: 5997 Accepted: 2140 DescriptionDear Contestant,I’m going to have a party at my vill

ATOD 3171

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

uva 1220 - Party at Hali-Bula 【入门树形dp】

题目:uva 1220 - Party at Hali-Bula 题意:一个公司员工要举行聚会,要求任意一个人不能和他的直接上司同时到场,一个员工只有一个支系上司,现在求最多有多少人到场,并且方案是否唯一 分析:分析发现是要求一个树的最大独立集。这里可以用树形dp解决。 定义dp【x】【0】:表示在 i 点不选 i 点的以 x 为子树的最大独立集 而dp【x】【1】 表示x到

大神养成中..... 3513

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Party at Hali-Bula--树形dp

题目链接:https://cn.vjudge.net/problem/HDU-2412 题目大意 公司有n个人,每个人都有自己的直接上司。公司要举办舞会,邀请员工参加,但是每个员工都不想和直接上司一起参加,问最多可以邀请多少个人参加舞会,并且回答是不是只有唯一的邀请方案。 分析 树形dp模板题,dp[x][0]表示x不参加舞会的最优解,dp[x][1]表示x参加舞会的最优解。如果某个人x参...

黄油^小饼干的博客 323

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

pku 3342 Party at Hali Bula 树形dp 解题报告

pku 3342_Party at Hali Bula解题报告.题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=3342题意:有n个人参加party,其中每2个人可能是上司与下属的关系。规定上司参加,他的下属就不能参加;或者下属参加,他的上司就不参加。问最多可以有多少个人参加这个party,如果方法不唯一,输出No与人数,唯一输出Yes与

find_my_dream的专栏 706

HDU 2412 Party at Hali-Bula 树形DP

HDU 2412 Party at Hali-Bula 树形DP

NNDXNM的专栏 628

hdu 2412 Party at Hali-Bula(树形DP)

题意:要举办一个舞会,雇员和它的zhishu

zizaimengzhongyue的专栏 651

hdoj2412Party at Hali-Bula【树形dp】

Party at Hali-Bula Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2192    Accepted Submission(s): 773 Problem Description Dear Con

走一步再走一步 484

Party at Hali-Bula(树形 dp)

Party at Hali-Bula #include <iostream> #include <cstdio> #include <cstring> #include <queue> #include <algorithm> #include <vector> #include <map> #include &l...

百般回首曾经的相遇,留下的只是一缕残忆 165

POJ3342 Party at Hali-Bula 树形DP

这题是问聚会时老板与员公不能同时出现的方案ov

MY专栏 445

Party at Hali-Bula UVA - 1220(树形DP)

Dear Contestant, I’m going to have a party at my villa at Hali-Bula to celebrate my retirement from BCM. I wish I could invite all my co-workers, but imagine how an employee can enjoy a party when he ...

tomjobs的博客 483

POJ - 3342 Party at Hali-Bula(树形dp)

题目链接:点击这里 题目大意: 题目分析: 出现不同的解的情况是,先进行遍历所有节点,如果出现 dp[i][0]dp[i][0]dp[i][0] 和 dp[i][1]dp[i][1]dp[i][1] 相等的情况,对于它的子节点,如果出现来与不来人数都一样的情况,就说明无论该子节点的父节点是否受该子节点的父节点的父节点的影响,总能出现由于该子节点的来与不来而出现的情况 ...

羊驼的博客 191

uva1220Party at Hali-Bula(树形dp)

题目: Dear Contestant, I’m going to have a party at my villa at Hali-Bula to celebrate my retirement from BCM. I wish I could invite all my co-workers, but imagine how an employee can enjoy a party whe

fouzhe的博客 455

poj3342Party at Hali-Bula(树形dp)

1 /* 2 树形dp! 3 判重思路: 4 当dp[v][0]==dp[v][1]时,很自然,flag[u][0]必然是有两种方案的。flag[u][1]则不然, 5 因为它只和dp[v][0]有关系。而若flag[v][0]不唯一时,则必然flag[u][1]也不唯一 6 也就是u的子节点有dp[v][1]==dp[v][0](...

aipiannian6725的博客 155
上一篇: A Spy in the Metro(dp)
下一篇: Candies(差数约分系统-最短路)
Techay
博客等级 码龄11年 11粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值