題面傳送門
很毒瘤的一道大模擬。
首先貪心讓軍隊走到最上面的點,如果能走到根節點就停留在根節點下面。
然後檢視哪幾顆子樹沒有被封死。
對於有軍隊的根節點,讓能走回來的軍隊出去調動,反之讓其停留在當前節點。
然後就是細節。
**實現:
#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 時如何貪心 由於除了在根節點所有軍隊都只往上跳明顯採取倍增的方式 記錄所有能到達根節點的軍隊和根節點下所有未被封死的子樹 將兩個序列從小到大排序後貪心匹配即可判斷 注意 在判斷封死...