摘要: 比较简单的树形DP题意:一个公司有一个电话网络,每个人的电话只和他的直接上级或者直接下属相连通。整个电话的网络和人事上下级关系一样,是一个树形的结构。现在Tanya希望向网络内的所有人传递一个信息,他就需要去打电话,他每分钟只能打一个电话,且他只能给他的直接上级或下属打电话,问最少需要多少时间,可以使得整个网络都得到这一消息。想法应该很简单,tanya对应的点当根节点,对所有节点来说,他对应的哪个儿子节点需要把消息发布到整棵子树的时间越长,就肯定应该给谁先打电话。然后对时间排序,稍作处理就不难得出答案。代码: 1 #include 2 #include 3 #include 4 #inc... 阅读全文
posted @ 2014-01-11 17:10 浙西贫农 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 题意:给你三个桶,容量分别为A,B,C,然后问你用这三个没有刻度的桶可以量出多少不同容量的水。0 2 #include 3 const int maxn = 1<<8; 4 bool d[maxn][maxn][maxn]; 5 bool vis[maxn*3]; 6 int A,B,C; 7 8 void dp(int n,int m,int k){ 9 if(d[n][m][k]) return;10 d[n][m][k] = 1;11 vis[n] = 1;12 vis[m] = 1;13 vis[k] = 1;14 vis[n+m] ... 阅读全文
posted @ 2014-01-11 14:55 浙西贫农 阅读(279) 评论(0) 推荐(0) 编辑