题意: n个人参加party,给出n个人的工作关系树,一个人和他的顶头上司不能同时参加,party达到的最大人数并判断邀请的最大人数名单是否唯一。

分析:

树状dp入门

dp[i][f],以i为根的子树,f=0,i不参加,f=1,i参加 能达到的最大人数。i参加i的孩子不能参加,i不参加,其孩子参不惨加都行(取最大值)。判断唯一性同理

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
#define maxn 65540
using namespace std;
const int inf = 0x3f3f3f3f;
const int N = ;
vector<int>e[N];
map<string,int>m;
int dp[N][];
bool f[N][];
void dfs(int root)
{
for(int i=;i<e[root].size();i++)
{
int son=e[root][i];
dfs(son);
if(f[son][])
f[root][]=;
dp[root][]+=dp[son][];
if(dp[son][]>dp[son][])
{
dp[root][]+=dp[son][];
if(f[son][])
f[root][]=;
}
else
{
dp[root][]+=dp[son][];
if(dp[son][]==dp[son][]||f[son][])
f[root][]=;
}
}
}
int main()
{
int n;
while(~scanf("%d",&n) && n)
{ for(int i = ;i<=n;i++)
e[i].clear();
m.clear();
memset(dp,,sizeof(dp));
memset(f,,sizeof(f));
for(int i=;i<=n;++i)
dp[i][]=;
int num = ;
string s1,s2;
cin>>s1;
m[s1] = num;
for(int i=;i<n;i++)
{
cin>>s1>>s2;
if(m[s1]==)
m[s1]=++num;
if(m[s2]==)
m[s2]=++num;
e[m[s2]].push_back(m[s1]);
}
dfs();
if(dp[][]==dp[][])
printf("%d No\n",dp[][]);
else if(dp[][]>dp[][])
printf("%d %s\n",dp[][],f[][]?"No":"Yes");
else
printf("%d %s\n",dp[][],f[][]?"No":"Yes");
}
return ;
}

Party at Hali-Bula的更多相关文章

  1. poj 3680 Intervals

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

  2. jQuery 遍历 - parent() 方法

    ylbtech-jQuery-sizzle:jQuery 遍历 - parent() 方法  parent() 获得当前匹配元素集合中每个元素的父元素,使用选择器进行筛选是可选的. 1.A,jQuer ...

  3. (转)TCP注册端口号大全

    分类: 网络与安全 cisco-sccp 2000/tcp Cisco SCCPcisco-sccp 2000/udp Cisco SCCp# Dan Wing <dwing&cisco ...

  4. 【转】CString类型互转 int

    CString类型互转 int 原文网址:http://www.cnitblog.com/Hali/archive/2009/06/25/59632.html CString类型的转换成int  将字 ...

  5. 阿里云ECS被攻击

    今天发现阿里云ECS被攻击了,记录一下, /1.1 Match1:{ :;};/usr/bin/perl -e 'print .content-type: text/plain.r.n.r.nxsuc ...

  6. PHP die与exit的区别

    最近听见有人说die和exit区别,bula~bula.决心一探究竟. 翻了翻PHP 5.6的源码(源码的位置为zend目录下zend_language_scanner.l大约是1014~1020行) ...

  7. JSP报错:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

    今天使用Eclipse+Maven建立了一个Javaweb工程,并在eclipse中配置了Web容器Jboss eap 6.2.新建jsp页面,添加一个简单 的Java类.可是,JSP页面顶端出现“红 ...

  8. js 对象创建设计模式

    创建js对象可以使用多种模式,每种模式有着不同的特点:如下: 1.工厂模式:创建一个函数,在函数中实例化一个对象,当每次调用函数时,就实例化一个对象,并返回这个对象: 我们知道,对象是引用形式的,每次 ...

  9. 一款基于jQuery带事件记录的日历插件

    之前我们也已经分享过不少jQuery日历插件,有些应用了CSS3的特性,外观就特别漂亮.今天要分享的这款jQuery日历插件不仅有着绚丽的外观,而且带有日期事件记录功能,点击日期即可展开事件记录窗口, ...

  10. 二、jenkins配置email(以腾讯企业qq为例)

    废话不多说,直接上干货: 主要针对两个部分进行介绍: 1.jenkins内置的邮件功能: 2.Editable Email Notification插件的邮件功能: 低版本的jenkins有很多插件都 ...

随机推荐

  1. 2014多校第一场A题 || HDU 4861 Couple doubi

    题目链接 题意 : 有K个球,给你一个数P,可以求出K个值,(i=1,2,...,k) : 1^i+2^i+...+(p-1)^i (mod p).然后女朋友先取,再xp取,都希望赢,如果女朋友能赢输 ...

  2. SDUT2142数据结构实验之图论二:基于邻接表的广度优先搜索遍历

    http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2142&cid=1186 题目描述 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜 ...

  3. Thread的第五天学习

    1.如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如:卖票系统就可以这么做! package com.thread.demo; publi ...

  4. C语言文件操作函数

    C语言文件操作函数大全 clearerr(清除文件流的错误旗标) 相关函数 feof表头文件 #include<stdio.h> 定义函数 void clearerr(FILE * str ...

  5. 78. Subsets

    题目: Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset mus ...

  6. 一个小应用的dbcp和c3p0配置实例

    以下是一个小应用的数据库连接池配置,包括DBCP和C3P0的配制方法 因为是小应用,完全不涉及访问压力,所以配置上采取尽量节约数据库资源的方式 具体要求如下:初始化连接数为0连接不够,需要新创建时,每 ...

  7. 简单说说PHP优化那些事

    我们在编写程序时,总是想要使自己的程序占用资源最小,运行速度更快,代码量更少.往往我们在追求这些的同时却失去了很多东西.下面我想讲讲我对PHP优化的理解.优化的目的是花最少的代价换来最快的运行速度与最 ...

  8. MongoDB安装及简单实验

    1.Windows下安装MongoDB http://www.mongodb.org/downloads 下载msi,下一步下一步… 安装完毕后,到安装目录的bin目录下执行mongod启动数据库服务 ...

  9. BZOJ 1923 外星千足虫(高斯消元)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1923 题意:有n个数字,m次测试.每个数字为0或者1.每次测试选出一些数字出来把他们加起 ...

  10. Flexigrid自定义显示数据列

    近期在搞ExtJs,发现ExJs的Grid相当的强大,后来又搞Jquery时,就对原来的表格不怎么满意了,于是,花了点时间,从网上找了个Grid插件,这个插件功能是比较强大,什么行排序.筛选.分页都有 ...