摘要: 题意:一棵树上问你最少切掉几条边使得能分割出一个结点数正好为k的子树。思路:dp[i][j]表示以i为根切掉j个结点最少要几条边。dp[v][j] = min(dp[v][j], dp[v][j-k] + dp[x][k]);代码如下: 1 dp[v]... 阅读全文
posted @ 2014-05-02 22:45 张小豪 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 题意:有一个有线电视网络叶子结点是用户,每个用户有一个愿意支付的金额。然后每条边都有话费。问公司在不亏本的情况下最多能满足多少用户。思路:dp[v][j] = max(dp[v][j], dp[v][j-k]+dp[x][k]-edge(v, x))其实就是背包问题,但是一开始TLE了一次,这里要有... 阅读全文
posted @ 2014-05-02 21:16 张小豪 阅读(156) 评论(0) 推荐(0) 编辑
摘要: Mark。看着吴神博客写的,还未完全懂。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #includ... 阅读全文
posted @ 2014-05-02 16:15 张小豪 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 题意:一颗树,n个节点,现在要在节点处设置尽量少的哨兵,使得每条边都被观察到。思路:dp[v][1] 表示v为根的子树v放哨兵的最小花费。dp[v][0]表示v为根的子树v不放哨兵的最小花费。代码如下: 1 #include 2 #include 3 #include 4 #include ... 阅读全文
posted @ 2014-05-02 14:15 张小豪 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 题意:输出从一颗树中所有结点出发可以走的最长的路。思路:先找到树上最长链然后判断两个端点中到每个结点远的距离就是答案。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8... 阅读全文
posted @ 2014-05-02 00:39 张小豪 阅读(359) 评论(0) 推荐(0) 编辑