題解 玫瑰花精

2022-03-16 19:41:18 字數 1386 閱讀 1273

時間限制: 1 sec  記憶體限制: 256 mb

題面

題面謝絕公開。

線段樹記錄四個資訊:l、r、mid、p。

l代表線段樹該節點所管轄的區間內最左邊的花精所在位置。r代表最右邊花精所在位置。

mid代表區間內相鄰花精距離最大值除以二,p代表mid值所在的位置。

考慮初始值:

對於每乙個線段樹所管轄的每乙個區間,$l=r=0$。$mid=p=0$。

考慮轉移過程:

l取最左邊,若左兒子的l有值,則為左兒子的l,否則若右兒子的l有值,l取右兒子的l,否則為0。r同理。

mid先在左兒子的mid和右兒子的mid中取最大值,然後考慮跨區間的轉移。

若左兒子的r!=0,右兒子的l!=0,則mid=max(mid,(右兒子的l-左兒子的r)/2)。p相應更新。

至於第乙個花精進入判掉即可233。

**:

#include#define rint register int

#define lc(a) (a<<1)

#define rc(a) (a<<1|1)

using

namespace

std;

int n,m,vis[1000006

];struct nodet[1000006

<<5

];inline

intget_dis()

inline

void update(int

k)inline

void add(int k,int l,int r,int

p)

int mid=(l+r)>>1

;

if(p<=mid)add(lc(k),l,mid,p);

else add(rc(k),mid+1

,r,p);

update(k);

}inline

void del(int k,int l,int r,int

p)

int mid=(l+r)>>1

;

if(p<=mid)del(lc(k),l,mid,p);

else del(rc(k),mid+1

,r,p);

update(k);

}int

main()

else del(1,1

,n,vis[x]);

}return0;

}/*7 11

1 15

1 123123

1 31 5

2 123123

2 15

1 21

2 31 6

1 71 8

*/

view code

CSP S模擬41影子,玫瑰花精題解

題面 影子 暴力方法 列舉每一對點暴力統計最小權 優化 考慮並查集,列舉每個點,如果沒有被訪問過,那麼嘗試把這兩個點加到乙個集合裡 維護每乙個點作為最小權時的樹上路徑的兩個端點,合併時維護即可 將所有點按照權值從大到小排序,對於將當前點和與其相連的所有點依次合 並到乙個集合中。並查集需要維護當前集合...

python玫瑰花數量的含義 玫瑰花數量代表的含義

1朵玫瑰代表 我的心中只有你 only you!2朵玫瑰代表 這世界只有我倆!3朵玫瑰代表 我愛你 i love you!4朵玫瑰代表 至死不渝!5朵玫瑰代表 由衷欣賞!6朵玫瑰代表 互敬 互愛 互諒!7朵玫瑰代表 我偷偷地愛著你!8朵玫瑰代表 感謝你的關懷扶持及鼓勵!9朵玫瑰代表 長久 alway...

python玫瑰花數量的含義 玫瑰花數量多少的含義

一 1朵玫瑰 1朵玫瑰花大多數是在剛剛相戀時贈送,1朵玫瑰花所代表的含義就是一見鐘情,或者是我的心中只有你乙個人。二 11朵玫瑰 11朵玫瑰花是很多人都經常選擇的玫瑰數量,通常是情侶之間表達愛意時送花,11朵玫瑰代表著一生一世,同時也是在向愛人表達 一生相伴,一世相隨 的美好愛情寓意。三 50朵玫瑰...