题意: 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. Opc

    http://www.tuicool.com/articles/nymUz2 http://blog.chinaunix.net/uid-20692368-id-3434001.html http:/ ...

  2. 在UWSGI和NGINX配合的情况下,配置个别目录上传及超时

    笨办法就是多加一个LOCATION. 然后,自定义以下类似参数 client_max_body_size uwsgi_connect_timeout uwsgi_read_timeout server ...

  3. sparse coding稀疏表达入门

    最近在看sparse and redundant representations这本书,进度比较慢,不过力争看过的都懂,不把时间浪费掉.才看完了不到3页吧,书上基本给出了稀疏表达的概念以及传统的求法. ...

  4. Java的登陆验证问题

    java中的登陆验证问题可以有多种方式进行验证,通过拦截器功能完成,可以通过过滤器功能完成,也可以简单的代码在JSP页面中单独完成,其中都 涉及到一个关键的验证步骤,这个验证原理ASP,PHP,JAV ...

  5. Shell 是个什么玩意

    Shell的定义: 计算机分为软件和硬件,管理计算机硬件的是操作系统,也就是我们说的kernel,而这个核心是需要被保护起来的. 那我们如何通过软件与硬件进行沟通,让硬件执行我们要完成的指令呢? 这个 ...

  6. Excel多条件筛选求和

    单位A 代码B 面积(㎡)C A组 011 124 A组 123 15 A组 011 356 A组 123 44 B组 123 31 B组 011 2 B组 123 2 按照单位和代码求面积的和,可以 ...

  7. POI 中的CellRangeAddress 参数

    在用poi在EXECL报表设计的时候,遇到单元格合并问题,用到一个重要的函数: CellRangeAddress(int, int, int, int) 参数:起始行号,终止行号, 起始列号,终止列号 ...

  8. Java API —— System类

    1.System类概述         System 类包含一些有用的类字段和方法.它不能被实例化.  2.成员方法         public static void gc():运行垃圾回收器   ...

  9. python 有关矩阵行列的存取 np.array

    初始化 a = range() a = np.array(a) a = a.reshape(,) a [[ 0  1  2  3]  [ 4  5  6  7]  [ 8  9 10 11]  [12 ...

  10. javascript精确计算

    一篇文章: 4 个用于执行高级数学计算的 JavaScript 库 numbers.js  Numeric Javascript accounting.js Tangle 有时只需要加减乘法能精确,没 ...