BZOJ4009 接水果(整體二分,掃瞄線)

2021-08-15 11:05:08 字數 2771 閱讀 9275

為什麼這都是許可權題???,洛谷真良心

看到這道題,感覺就是主席樹/整體二分之類的東西

(因為要求第

k 大)

但是,讀完題目之後,我們發現路徑之間的包含關係很不好搞

那麼,我們來畫畫圖

這是第一種情況,lc

a不是u,

v u,

v 分別是乙個盤子的兩端

如果被乙個水果完全覆蓋,

那麼,這個水果的兩端分別在u,

v 的子樹中 設d

fn[u

] 是

u 的df

s序 lo

w[u]

是子樹中最大的df

n 那麼,設水果兩端分別為a,

b df

n[u]

≤dfn

[a]≤

low[

u],d

fn[v

]≤df

n[b]

≤low

[v]

再看第二種情況

也就是說,此時

u 是lc

a那麼,乙個點還是在

v 的子樹內

另乙個點在這條鏈的子樹外 設u

,v鏈上的u

的兒子為

w那麼,水果的乙個點一定不在

w 的子樹內

也就是說: df

n[v]

≤dfn

[a]≤

low[

v]df

n[b]

n[w]

orlo

w[w]

n[b]

好的 現在知道了這些,有什麼用???

如果我們把盤子的df

n[u]

,dfn

[v],

low[

u],l

ow[v

] 看成兩個點

組成了乙個矩形

那麼,水果的df

n[a]

,dfn

[b] 就是乙個點

所以,乙個水果如果被盤子所完全覆蓋

那麼,也就是水果組成的點被盤子組成的矩形所包含

所以整體二分+掃瞄線求解就很容易做了

#include
#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define ll long long

#define rg register

#define max 50000

inline

int read()

struct edgee[max<<1];

int h[max],cnt=1;

inline

void add(int u,int v);h[u]=cnt++;}

int p[18][max],dep[max];

int n,p,q,dfn[max],tim,low[max],tot;

struct mtt[max<<2];

struct frq[max],q1[max],q2[max];

struct lilk[max];

bool

operator

int lca(int u,int v,int opt)

int c[max],ans[max];

inline

int lowbit(int x)

inline

void modify(int x,int w)

inline

int getsum(int x)

void work(int l,int r,int l,int r)

int mid=(l+r)>>1,t1=0,t2=0,cnt=0;

for(int i=l;i<=mid;++i)

;lk[++cnt]=(li);

}sort(&lk[1],&lk[cnt+1]);

int pos=1;

for(int i=l;i<=r;++i)

for(int i=1;i1,lk[i].v);

for(int i=1;i<=t1;++i)q[l+i-1]=q1[i];

for(int i=1;i<=t2;++i)q[l+t1-1+i]=q2[i];

work(l,l+t1-1,l,mid);

work(l+t1,r,mid+1,r);

}int main()

dfs(1,0);

for(int i=1;i<=p;++i)

;else

;if(low[d]!=n)t[++tot]=(mt);}}

for(int i=1;i<=q;++i);}

sort(&t[1],&t[tot+1]);sort(&q[1],&q[q+1]);

work(1,q,1,tot);

for(int i=1;i<=q;++i)printf("%d\n",ans[i]);

return

0;}

接水果 fruit 整體二分 掃瞄線

題目描述 風見幽香非常喜歡玩乙個叫做 osu 的遊戲,其中她最喜歡玩的模式就是接水果。由於她已經 dt fc 了 the big black,她覺得這個遊戲太簡單了,於是發明了乙個更加難的版本。首先有乙個地圖,是一棵由 n 個頂點 n 1 條邊組成的樹 例如圖 1 給出的樹包含 8 個頂點 7 條邊...

luogu3242 接水果 整體二分 樹狀陣列

考慮整體二分,問題就變成了每個 水果 路徑有多少個滿足條件 權值 的 盤子 子路徑 考慮乙個盤子 a,b 表示兩端點 不妨設dfn a 1.如果a是b的祖先,則u在 a的在 b,a 鏈上的孩子 這個子樹外,v在b子樹內 2.否則,u在a的子樹內,v在b的子樹內 那麼把乙個水果 a,b 看成是乙個二維...

BZOJ 2527 Meteors(整體二分)

description 有n個國家和m個空間站,每個空間站都屬於乙個國家,乙個國家可以有多個空間站,所有空間站按照順序形成乙個環,也就是說,m號空間站和1號空間站相鄰。現在,將會有k場流星雨降臨,每一場流星雨都會給區間 li,ri 內的每個空間站帶來ai單位的隕石,每個國家都有乙個收集隕石的目標pi...