luogu P1084 疫情控制

2021-10-09 05:42:17 字數 1714 閱讀 1176

題面傳送門

很毒瘤的一道大模擬。

首先貪心讓軍隊走到最上面的點,如果能走到根節點就停留在根節點下面。

然後檢視哪幾顆子樹沒有被封死。

對於有軍隊的根節點,讓能走回來的軍隊出去調動,反之讓其停留在當前節點。

然後就是細節。

**實現:

#include

#include

#include

#include

#include

using

namespace std;

int n,m,k,x,y,fa[

300039][

20],lg[

300039

],a[

300039

],flag[

300039

],cur,fh,jh,nh,curs,d[

300039

],fxt,fxts;

long

long l,r,z,mid,sum[

300039][

20],fin[

300039

],jun[

300039

],now[

300039

],anss;

struct yyytmp;

struct ljb

; h[x]

=head;

}}s,h;

inline

void

dfs(

int x,

int last)

}inline

intlca

(int x,

long

long time)

inline

intdfs2

(int x,

int last)

cur=tmp.z;}if

(!flags||ff)

return1;

else

return0;

}inline

intcheck

(long

long mid)

fxt=0;

sort

(now+

1,now+nh+1)

;if(!flag[tmp.to]

&&dfs2

(tmp.to,1)

)for

(i=1

+fxt;i<=nh;i++)if

(now[i]

>

0)jun[

++jh]

=now[i]

; cur=tmp.z;

}sort

(fin+

1,fin+fh+1)

;sort

(jun+

1,jun+jh+1)

; i=j=1;

while

(i!=fh+

1&&j!=jh+1)

//printf("\n");

if(i==fh+1)

return1;

else

return0;

}int

main()

if(l==anss)

printf

("-1\n");

else

printf

("%lld\n"

,r);

}

Luogu P1084 疫情控制

luogu p1084 疫情控制 再水篇部落格 2019.8.28 騙 1分未遂 打了個二分不會check 勸退 2019.9.29 乙個月了啊 怎麼說都要打下來 這個題解好哇 注釋了一些在 裡 include include include using namespace std define l...

P1084 疫情控制

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

P1084 疫情控制

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