SCOI2011 棘手的操作

2021-10-04 17:52:17 字數 1349 閱讀 1765

點此看題

維護乙個左偏樹和乙個並查集,這道題的關鍵是使用惰性刪除法,然而我講不清楚,直接看**吧(詳細注釋)。

#include

#include

#include

using

namespace std;

const

int m =

300005

;int

read()

struct nodet[2

*m];

struct data

}tmp;

int n,m,cnt,vers[m]

,rt[m]

,la[m]

,top[m]

,siz[m]

,ver[m]

;char s[6]

;/*cnt:左偏樹節點的個數

vers:並查集的版本

ver:並查集上單個點在左偏樹上的版本

la:並查集的修改標記

top:並查集在左偏樹上的根

siz:並查集的大小

*/priority_queue q;

intmerge

(int x,

int y)

//左偏樹的合併

intfind

(int x)

//並查集的根

void

push

(int x,

int v)

//整棵樹做修改

intfake

(int x)

//判斷這個點是否被惰性刪除過,即判斷版本

signed

main()

m=read()

;for

(int i=

1;i<=m;i++)if

(s[0]==

'a'&& s[1]

=='1'

)//單點修改

if(s[0]

=='a'

&& s[1]

=='2'

)//並查集修改

if(s[0]

=='a'

&& s[1]

=='3'

)//全域性修改

if(s[0]

=='f'

&& s[1]

=='1')if

(s[0]==

'f'&& s[1]

=='2')if

(s[0]==

'f'&& s[1]

=='3'

)printf

("%d\n"

,tmp.v+la[0]

);//全域性最值+全域性標記}}

}

SCOI2011 棘手的操作

有 n 個節點,標號從 1 到 n 這 n 個節點一開始相互不連通。第 i 個節點的初始權值為 a i 接下來有如下一些操作 u x y 加一條邊,連線第 x 個節點和第 y 個節點 a1 x v 將第 x 個節點的權值增加 v a2 x v 將第 x 個節點所在的連通塊的所有節點的權值都增加 v ...

SCOI2011 數論 飛鏢

很罕見的不好做的模擬題。情況很多,不容易考慮全面。可以先把問題簡化,然後逐步加深,這樣有利於思考問題。對這道題來說,可以先考慮不打紅心的情況,再考慮打紅心的情況。考慮打紅心又分為 打m,2m,3m,4m的情況,這樣就不容易出錯 做題一定要細心,考慮全面。include includeusing na...

SCOI2011 糖果 題解

洛谷題面 看到很多題解並沒有講清楚這道題為什麼可以用某些方法,套個板子就沒了。蒟蒻就發一篇題解裝x造福大家吧233 做這道題前,我推薦大家做一下一本通中的1352 例4 13 獎金一題,因為有可能做完了這道題對於你們會有一點啟發。題目分析題目對於小朋友的嫉妒一共有 5 中情況,分別如下 如果 x 1...