uva 1220——Party at Hali-Bula

题意:公司里n个人,要举办一场party,但是到场的人不能碰到他的直隶上司,问最多能到场多少人。


思路:树形dp,就是求在树上的最大独立集合,加唯一性特判。dp(u,0)表示不选u点的条件最大人数,kp是唯一与否。状态转移有两套

选u点dp(u,1)=sum(dp(v,0))

不选u点 dp(u,0)=sum(max(dp(v,1),dp(v,0)));


code:

#include <bits/stdc++.h>
using namespace std;#define ft(i,s,t) for (int i=s;i<=t;i++)
#define frt(i,t,s) for (int i=t;i>=s;i--)
#define cls(v,c) memset(v,c,sizeof(v))
const int INF=0x3f3f3f3f;
const int N=205;int dp[N][2],kp[N][2],len,n;
vector<int>v[N];
string s1,s2,s;
map<string,int>mp;void dfs(int u)
{dp[u][0]=0;dp[u][1]=1;kp[u][0]=kp[u][1]=1;for (int i=0;i<v[u].size();i++){int t=v[u][i];dfs(t);dp[u][0]+=max(dp[t][0],dp[t][1]);dp[u][1]+=dp[t][0];if (dp[t][0]>dp[t][1]&&dp[t][0]==0) kp[u][0]=0;else if (dp[t][1]>dp[t][0]&&dp[t][1]==0) kp[u][0]=0;else if (dp[t][1]==dp[t][0]) kp[u][0]=0;if (kp[t][0]==0) kp[u][1]=0;}}
int main()
{while (~scanf("%d",&n)&&n){ft(i,0,n) v[i].clear();cls(dp,0);cls(kp,0);mp.clear();len=1;cin>>s;mp[s]=len++;ft(i,1,n-1){cin>>s1>>s2;if (mp.count(s1)==0) mp[s1]=len++;if (mp.count(s2)==0) mp[s2]=len++;v[mp[s2]].push_back(mp[s1]);}dfs(1);if (dp[1][0]>dp[1][1]&&kp[1][0]) printf("%d Yes\n",dp[1][0]);else if (dp[1][1]>dp[1][0]&&kp[1][1]) printf("%d Yes\n",dp[1][1]);else printf("%d No\n",max(dp[1][0],dp[1][1]));}
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381846.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vi编辑器的基本使用方法

Vi编辑器的基本使用方法- Tag&#xff1a; linux Vi 使用方法 来自&#xff1a;Linux公社 vi编辑器是所有Unix及Linux系统下标准的编辑器&#xff0c;它的强大不逊色于任何最新的文本编辑器&#xff0c;这里只是简单地介…

uva 10285——Longest Run on a Snowboard

题意&#xff1a;在一个R*c的矩阵上找一条高度严格递减的最长路&#xff0c;起点任意&#xff0c;每次可以走上下左右。 思路&#xff1a;DAG上的最长路问题&#xff0c;直接套用记忆化搜索的模板&#xff0c;dp&#xff08;i&#xff0c;j&#xff09;max&#xff08;dp&#…

DB2应用经验

//建立数据库DB2_GCB CREATE DATABASE DB2_GCB ON G: ALIAS DB2_GCB USING CODESET GBK TERRITORY CN COLLATE USING SYSTEM DFT_EXTENT_SZ 32 //连接数据库 connect to sample1 user db2admin using 8301206 //建立别名 create alias db2admin.tables for sysstat.tables; CR…

uva 10118 ——Free Candies

题意&#xff1a;桌子上有4 堆糖果&#xff0c;要从这四堆糖果中取出5个&#xff0c;如果5个中有相同的颜色则把他们拿出来放到口袋&#xff0c;求最多放多少糖果。 思路&#xff1a;DAG最长路问题。需要把问题转化成DAG的问题&#xff0c;以个数作为转移的状态&#xff0c;当达…

uva 1218——Perfect Service

题意&#xff1a;有n个机器组成的树形结构&#xff0c;要求一台服务器必须连接一台电脑&#xff0c;求使用的最少的服务器。。 思路&#xff1a; 树形DP&#xff0c;和前面的有道题目类似。在dfs遍历树的时候找到选当前结点和不选当前节点的最大状态&#xff0c;多一个两个都不…

SYBASE灾难备份方案

SYBASE灾难备份方案 本方案主要从计算机系统的可用性出发&#xff0c;给出了高可用性问题的一般描述及群机方式的特色&#xff0c;进而提出了灾难备份的特殊考虑及SYBASE的灾难备份方案。 一、系统高可用性&#xff08;High Availability&#xff09;... 2 1、高可用性方案... …

uva 10817——Headmaster's Headache

题意&#xff1a;某个学校有m个老师和n个求职者&#xff0c;需要讲授s个课程&#xff0c;已知每个人的工资c和能交的课程&#xff0c;求花费最小使得每门课程都至少有两个人教。 思路&#xff1a;状压dp&#xff0c;将每个老师要交的课程压缩成一个数&#xff0c;然后对于每门课…

单链表实例之学生系统

单链表实例之学生系统 #include<stdio.h> #include<stdlib.h>#define NAME_LEN 20typedef struct node {int number;char *name;struct node *next; } node_t;node_t *g_head; int add_stu() {node_t *new, *tmp;tmp g_head;char *name;new (node_t *)malloc(si…

公司培训文档-JavaScript[对象.属性]集锦

SCRIPT 标记 用于包含JavaScript代码. 属性 LANGUAGE 定义脚本语言 SRC 定义一个URL用以指定以.JS结尾的文件 windows对象 每个HTML文档的顶层对象. 属性 frames[] 子桢数组.每个子桢数组按源文档中定义的顺序存放. feames.length 子桢个数. self 当前窗口. parent …

uva 1252——Twenty Questions

题意&#xff1a;给定n个物品&#xff0c;每个物品用01串表示&#xff0c;表示具备与否某个特征&#xff0c;然后每次可以询问一个特征&#xff0c;问最少询问几次能够确定一个物品。 思路&#xff1a;状压Dp&#xff0c;将这些数的特征压缩成一个数&#xff0c;把询问过的和没…

[转]“UPA 中国”北京行业聚会笔录

来自:白鸦http://www.uicom.net/blog/article.asp?id409-----------“UPA 中国”北京行业聚会笔录---------------------------与会嘉宾&#xff1a;清华美院信息艺术设计系系主任&#xff1a;鲁晓波中国设计业十大杰出青年评选办公室主任&#xff1a;邢雷 清华大学工业工程系…

系统I/O小程序-文件拷贝

系统I/O小程序-文件拷贝 使用系统IO函数编写 ./syscopy src des #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <errno.h>/** * …

uva 10934—— Dropping water balloons

题意&#xff1a;给定K个气球&#xff0c;然后n层楼的高度&#xff0c;求确定气球的硬度&#xff08;站在多高能摔破&#xff09; 思路&#xff1a;递推。dp&#xff08;i&#xff0c;j&#xff09;表示最优&#xff0c;那么即dp&#xff08;i-1&#xff0c;j-1&#xff09;1最…

商海致富独家秘诀:微笑可以当钱花

郭俭&#xff0c;深圳凯创电子设备有限公司营销总经理。当过教师&#xff0c;坐过机关&#xff0c;最后下海了&#xff0c;来到深圳。记者到他办公室采访的时候&#xff0c;第一眼看到的&#xff0c;是他温暖而质朴的微笑。这无言的微笑&#xff0c;让人觉得站在面前的&#xf…

标准I/O小程序-文件拷贝

标准I/O小程序-文件拷贝 #include <stdio.h> #include <string.h>/** * * ./mycopy src des */ int main(int argc, char *argv[]) {FILE *des, *src;char buf[128];int ret, i, j, count;if (argc < 3) {printf("The argc is wrong!\n");retu…

uva 12105——Bigger is Better

题意&#xff1a;给定n个火柴&#xff0c;求能够摆出的最大的数。 思路&#xff1a;递推&#xff0c;dp&#xff08;i&#xff0c;j&#xff09;表示i根火柴拼出除以m余数为j的最大的数&#xff0c;然后递推用dp&#xff08;i&#xff0c;j&#xff09;*10k更新dp&#xff08;i…

[导入]Google Earth坐标集(能更看清这个世界喽!)

这里收集了一些有趣的地理坐标&#xff0c;使用方法很简单&#xff0c;先启动Google Earth&#xff0c;然后选择软件左面的部分“Fly to(飞至)”在下面的框中粘贴坐标&#xff0c;按回车即可“飞”到这个地方。珠穆朗玛峰(Mount Everest)&#xff1a;27.9782502279, 86.9221941…

fcntl函数之文件锁 F_SETLK

fcntl函数之文件锁 F_SETLK #include <stdio.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <errno.h>/** * *./myfcntl contentstruct flock {...short l_type; F_RDLCK,F_WRLCK,F_UNLCKshort l_whence; How…

uva 1625——Color Length

题意&#xff1a;给定两个长度分别为n和m 的颜色序列&#xff0c;要求按顺序合并成一个序列&#xff0c;即每次可以把开头的颜色放到新序列末尾&#xff0c;跨度l&#xff08;c&#xff09;等于最大和最小的位置之差。 思路&#xff1a;递推&#xff0c;f&#xff08;i,j&#…

刚刚注册,打声招呼先

我今天终于注册了一个属于自己的博客了。我没有用过博客&#xff0c;也很少去看别人的博客。但是登陆了计算机图形学的老师推荐的博客后&#xff0c;我觉得博客还真是个好东西。向别人展示自己的经验心得&#xff0c;与别人共享好的东西。我喜欢与人分享一切美好的东西。共享&a…