Luogu P1084 疫情控制

2021-09-27 12:44:54 字數 1874 閱讀 6812

luogu p1084 疫情控制

再水篇部落格

2019.8.28

騙-1分未遂

打了個二分不會check 勸退

2019.9.29(乙個月了啊…)

怎麼說都要打下來

這個題解好哇

注釋了一些在**裡

#include

#include

#include

using

namespace std;

#define ll long long

ll ans=-1

,sumc=

0,l,r;

ll dis[

500100][

30],path[

500100

],dep[

500100];

int first[

500100];

int f[

500100][

30];struct nod1a[

1000010];

struct nod2act[

500100

],wait[

500100];

int n,m,army[

500100

],need=

0,can=

0,len=0;

int used[

500100

],v[

500100

],stay[

500100];

void

ins(

int x,

int y,ll c)

void

pre(

int x,

int ff)

for(

int i=first[x]

;i;i=a[i]

.next)

}void

move

(ll nowc)}if

(f[x][0

]==1&&

(went+path[x]

)<=nowc)

}else}}

void

find

(int x,

int ff)

if(sum1!=

0&&sum1==sum2)v[x]=1

;if(x==1)

}}}int

cmp(nod2 x,nod2 y)

intcheck

(ll nowc)

if(act[now]

.left.left)

return0;

used[act[now]

.old]=1

;now++;}

return1;

}int

main()

scanf

("%d"

,&m)

;for

(int i=

1;i<=m;i++

)scanf

("%d"

,&army[i]);

dep[1]

=1; path[1]

=0;pre(1

,0);

//1.先預處理出倍增陣列

ll l=

0,r=sumc;

while

(l<=r)

//2.二分

else l=mid+1;

}printf

("%lld"

,ans)

;}

剛剛溜去看合唱比賽了

我們班天耀中華唱的好好!

雖然我不上台在台下有點寂寞

但真的好激動啊 真好

我知道他們練得很刻苦

我也要努力啊!

luogu P1084 疫情控制

題面傳送門 很毒瘤的一道大模擬。首先貪心讓軍隊走到最上面的點,如果能走到根節點就停留在根節點下面。然後檢視哪幾顆子樹沒有被封死。對於有軍隊的根節點,讓能走回來的軍隊出去調動,反之讓其停留在當前節點。然後就是細節。實現 include include include include include u...

P1084 疫情控制

p1084 疫情控制 好像二分 倍增 樹上差分是比較熱門的考尻點 會結合在一起考,難度比較大,需要多加練習。現在在解決noip最後的幾道大題,很鵝心。也沒有人做嚮導,很難受qwq 首先這是一棵樹,乙個軍隊肯定是越往上走越好。有大佬說過,對於這種提點的題,要是用倍增 要是時間最短,就是要是用時最長的軍...

P1084 疫情控制

p1084 傳送門 感覺noip t3也是有點東西的 將該題轉化為最大值最小問題後想到二分答案 接下來考慮 check 時如何貪心 由於除了在根節點所有軍隊都只往上跳明顯採取倍增的方式 記錄所有能到達根節點的軍隊和根節點下所有未被封死的子樹 將兩個序列從小到大排序後貪心匹配即可判斷 注意 在判斷封死...