夹克老爷的愤怒

原创 2018年04月16日 14:19:21
夹克老爷逢三抽一之后,由于采用了新师爷的策略,乡民们叫苦不堪,开始组织起来暴力抗租。
夹克老爷很愤怒,他决定派家丁常驻村中进行镇压。
诺德县 有N个村庄,编号0 至 N-1,这些村庄之间用N - 1条道路连接起来。
家丁都是经过系统训练的暴力机器,每名家丁可以被派驻在一个村庄,并镇压当前村庄以及距离该村庄不超过K段道路的村庄。
夹克老爷一贯奉行最小成本最大利润的原则,请问要实现对全部村庄的武力控制,夹克老爷需要派出最少多少名家丁?

Input
第1行:2个数N, K中间用空格分隔(1<= N <= 100000, 0 <= K <= N)。
之后N-1行:每行2个数S, E中间用空格分隔,表示编号为S的村庄同编号为E的村庄之间有道路相连。(0 <= S, E < N)。
Output
输出一个数说明要实现对全部村庄的武力控制,夹克老爷需要派出最少多少名家丁?
Input示例
4 1
0 1
0 2
0 3
Output示例

1

#include <iostream>    
#include <algorithm>    
#include <cmath>    
#include <vector>    
#include <string>    
#include <cstring>    
#pragma warning(disable:4996)    
using namespace std;  
  
#define inf 0x3f3f3f3f  
const int MAXN = 1e5 + 50;
int res;  
int n, k;  
int s, e;   
int used[MAXN];  
int dp[MAXN];  
vector<int>node[MAXN];  
  
void dfs(int x)  
{  
    used[x] = 1;  
    int minn = inf;  
    int maxn = -inf;  
    int size = node[x].size();  
  
    int i;  
    for (i = 0; i < size; i++)  
    {  
        int temp = node[x][i];  
        if (used[temp] == 0)  
        {  
            dfs(temp);  
            minn = min(minn, dp[temp]);  
            maxn = max(maxn, dp[temp]);  
        }  
    }  
    if (minn == inf)  
    {  
        dp[x] = -1;  
    }  
    else if (minn <= -k)  
    {  
        res++;  
        dp[x] = k;  
    }  
    else if (maxn + minn > 0)  
    {  
        dp[x] = maxn - 1;  
    }  
    else  
    {  
        dp[x] = minn - 1;  
    }  
    used[x] = 0;  
}  
  
int main()  
{  
    int i;  
    cin >> n >> k;
    for (i = 1; i <= n - 1; i++)  
    {  
        cin >> s >> e;
        s++;  
        e++;  
        node[s].push_back(e);  
        node[e].push_back(s);  
    }  
    if (k == 0)  
    {  
        cout << n << endl;
        return 0;  
    }  
    dfs(1);  
  
    if (dp[1] < 0)  
    {  
        res++;  
    }  
    cout << res << endl;
    
    return 0;  
}  

二 小菜鸟——JAVA进阶

-
  • 1970年01月01日 08:00

51nod 1378:夹克老爷的愤怒 很好玩的一道树状dp

1378 夹克老爷的愤怒 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  取消关注 夹克老爷逢三抽一之...
  • u010885899
  • u010885899
  • 2015-11-04 21:19:02
  • 866

51nod 1378 夹克老爷的愤怒(树形DP+贪心)

题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1378 大致题意: 一棵1e5节点的树,安放某些位置,一个位...
  • kalilili
  • kalilili
  • 2015-08-30 10:57:23
  • 1009

【51Nod1378】夹克老爷的愤怒

夹克老爷逢三抽一之后,由于采用了新师爷的策略,乡民们叫苦不堪,开始组织起来暴力抗租。 夹克老爷很愤怒,他决定派家丁常驻村中进行镇压。 诺德县 有N个村庄,编号0 至 N-1,这些村庄之间用N - ...
  • w_yqts
  • w_yqts
  • 2017-10-25 18:51:09
  • 77

51Nod-1378-夹克老爷的愤怒

ACM模版描述题解这个题和这一段时间的那个拉钩测评选择的最后一道题极其相似,那个题好像叫做监狱逃离,是一个七级算法,但是和这个题几乎是一样的,同样都是树,也都是树归,找一个结点作为根后开始深入,一直深...
  • f_zyj
  • f_zyj
  • 2017-06-17 13:35:16
  • 217

51nod 1380 夹克老爷的逢三抽一

题意 又到了诺德县的百姓孝敬夹克大老爷的日子,带着数量不等的铜板的村民准时聚集到了村口。 夹克老爷是一位很”善良”的老爷,为了体现他的仁慈,有一套特别的收钱的技巧。 1、让所有的村民排成一队,然...
  • qq_36797743
  • qq_36797743
  • 2018-02-10 12:40:01
  • 40

51nod-1380 夹克老爷的逢三抽一(贪心)

1380 夹克老爷的逢三抽一 基准时间限制:1 秒 空间限制:131072 KB 分值: 320 难度:7级算法题  收藏  关注 又到了诺德县的百...
  • huatian5
  • huatian5
  • 2017-04-15 11:20:10
  • 707

51nod 1625 夹克爷发红包,暴力+贪心

1625 夹克爷发红包 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 在公司年会上,做为互联网巨头51nod掌门人的夹克老...
  • winter2121
  • winter2121
  • 2017-05-16 23:30:54
  • 392

51nod 1378 夹克老爷的愤怒(树形dp)

树形DP,贪心思想,从叶子节点向上,能不放就不放,到了k长就放一个。 后序遍历,记录不同子树上传的状态,子树状态记录为该子树可以向上管理的(缺少的用负数) 可能A子树放置的家丁可以把B子树的村庄全...
  • clx55555
  • clx55555
  • 2017-10-07 15:34:38
  • 99

夹克老爷发红包(51nod1625)

在公司年会上,做为互联网巨头51nod掌门人的夹克老爷当然不会放过任何发红包的机会。 现场有n排m列观众,夹克老爷会为每一名观众送出普通现金红包,每个红包内金额随机。 接下来, ...
  • m0_37109329
  • m0_37109329
  • 2017-05-31 20:09:58
  • 231
收藏助手
不良信息举报
您举报文章:夹克老爷的愤怒
举报原因:
原因补充:

(最多只允许输入30个字)