Luogu P3942 將軍令 題解報告

2022-04-28 20:21:12 字數 1790 閱讀 8350

題目傳送門

【題目大意】

這個題面有點中二啊hhhh

總結一下就是給出了一棵$n$個節點的樹,然後在乙個節點駐紮小隊就可以控制樹上所有距離它不超過$k$的節點,求最少需要駐紮多少個小隊就可以控制整棵樹。

【思路分析】

首先有乙個非常顯然的結論,如果把小隊駐紮在葉子節點顯然是比駐紮在非葉子節點要不優的,所以我們可以考慮將所有點按照深度從大到小排序。

每次取出乙個當前深度最大的點,如果這個點已經被覆蓋過了,那就跳過,否則找到這個點的第$k$級祖先,在此駐紮小隊,$ans++$,並覆蓋掉所有距此的距離不大於$k$的點。

最後輸出$ans$即為答案。

【**實現】

1 #include2 #include3 #include4 #include5 #include6 #include7

#define g() getchar()

8#define rg register

9#define go(i,a,b) for(rg int i=a;i<=b;i++)

10#define back(i,a,b) for(rg int i=a;i>=b;i--)

11#define db double

12#define ll long long

13#define il inline

14#define pf printf

15#define to(i) e[i].to

16#define e(i,x) for(rg int i=head[x];i;i=e[i].next)

17using

namespace

std;

18int

fr()

25while(ch>='

0'&&ch<='

9') w=(w<<1)+(w<<3)+ch-'

0',ch=g();

26return w*q;27}

28const

int n=1e5+2;29

int n,k,ed=0

,head[n],f[n],dep[n],ans;

30bool

vis[n];

31struct

edgee[n<<1

];34

struct

treet;

37 priority_queueq;

38 il bool

operator

< (tree x,tree y)

44 il void tree(rg int x,rg int

fa)50

return;51

}52 il int find(rg int

x)58

return

x;59

}60 il void work(rg int fa,rg int x,rg int

kk)66

intmain()

74 f[1]=1;dep[1]=1;tree(1,1

);75 go(i,1,n) t=(tree),q.push(t);

76while(!q.empty())

83 pf("

%d\n

",ans);

84return0;

85 }

**戳這裡

題解 Luogu P3942 將軍令 貪心

f x 0 表示最近控制驛站的距離 f x 1 表示最遠不能控制的驛站距離 當f x 0 f x 1 k是說明能被控制,但沒有貢獻 當f x 1 k時,x必須被控制,這時已經到達能控制點的最遠距離,如果再向上,x就無法被控制 正確性 如果x可以向上移動,並且仍然能控制x移動前能控制的點,就把x向上移...

題解 將軍令 Luogu P3942 未完成

至少 我們 擁有 傳說 誰說 敗者 無法 不朽 拳頭 只能 讓人 低頭 念頭 卻能 讓人 抬頭 抬頭 去看 去愛 去追 你心中的夢 又想起了四月。如果不是省選,大家大概不會這麼輕易地分道揚鑣吧?只見乙個又乙個昔日的隊友離開了機房。憑君莫話封侯事,一將功成萬骨枯。夢裡,小 f 成了乙個給將軍送密信的信...

題解 將軍令

這道題我看到有人打了樹形 dp 我當時想,每種情況都要討論,20 的dp方程,那位神仙是給某主播打賞了10萬後氣急敗壞了嗎?有的時候,可以貪心的別莽著打dp啊 有道簡化版 p2279 hnoi2003 消防局的設立 樹形dp or 貪心 luogu傳送門 p3942 將軍令 又想起了四月。如果不是省...