HNOI(湖南省選試題) 永無鄉

2021-07-26 09:40:42 字數 2103 閱讀 3218

今天寫了一道十分巧妙的資料結構題———永無鄉

(看的題解。。。。。。)

永無鄉包含 n 座島,編號從 1 到 n,每座島都有自己的獨一無二的重要度,按照重要度可

以將這 n 座島排名,名次用 1 到 n 來表示。某些島之間由巨大的橋連線,通過橋可以從乙個島

到達另乙個島。如果從島 a 出發經過若干座(含 0 座)橋可以到達島 b,則稱島 a 和島 b 是連

通的。現在有兩種操作:b x y 表示在島 x 與島 y 之間修建一座新橋。q x k 表示詢問當前與島

x 連通的所有島中第 k 重要的是哪座島,即所有與島 x 連通的島中重要度排名第 k 小的島是哪

座,請你輸出那個島的編號。

輸入描述 input description

從檔案 input.txt 中讀入資料,輸入檔案第一行是用空格隔開的兩個正整數 n 和 m,分別

表示島的個數以及一開始存在的橋數。接下來的一行是用空格隔開的 n 個數,依次描述從島 1

到島 n 的重要度排名。隨後的 m 行每行是用空格隔開的兩個正整數 ai 和 bi,表示一開始就存

在一座連線島 ai 和島 bi 的橋。後面剩下的部分描述操作,該部分的第一行是乙個正整數 q,

表示一共有 q 個操作,接下來的 q 行依次描述每個操作,操作的格式如上所述,以大寫字母 q

或 b 開始,後面跟兩個不超過 n 的正整數,字母與數字以及兩個數字之間用空格隔開。

對於 20%的資料 n≤1000,q≤1000

對於 100%的資料 n≤100000,m≤n,q≤300000

輸出描述 output description

輸出檔案 output.txt 中,對於每個 q x k 操作都要依次輸出一行,其中包含乙個整數,表

示所詢問島嶼的編號。如果該島嶼不存在,則輸出-1。

樣例輸入 sample input

5 14 3 2 5 1

1 27

q 3 2

q 2 1

b 2 3

b 1 5

q 2 1

q 2 4

q 2 3

樣例輸出 sample output -1

2512

利用並查集的思想,在用線段樹維護其排名,由於還需要類似於並查集的線段樹合併,故不能用普通的線段樹劃分左兒子右兒子編號為(o<<1)和((o<<1)|1),開兩個ls,rs陣列

所以在掃的過程中找並查集的代表點,再在上面線段樹維護排名,再合併,查詢,

可謂巧妙至極!!!

#include#include#include#include#include#include#define inf 0x7fffffff

#define ll long long

using namespace std;

inline int read()

while(ch>='0'&&ch<='9')

return x*f;

}int n,m,k,sz;

int v[100005],id[100005],fa[100005],root[100005];

int ls[1800000],rs[1800000],sum[1800000];

int find(int x)

void insert(int &k,int l,int r,int val)

int mid=(l+r)>>1;

if(val<=mid)insert(ls[k],l,mid,val);

else insert(rs[k],mid+1,r,val);

sum[k]=sum[ls[k]]+sum[rs[k]];

}int query(int k,int l,int r,int rank)

int merge(int x,int y)

int main()

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

k=read();char ch[2];

while(k--)

{ scanf("%s",ch);

x=read();y=read();

if(ch[0]=='q'){

int p=find(x);

if(sum[root[p]]

湖南省2017省賽A題

題目大意,給你n個數,要求你給出任意乙個排列,要求乙個數與左右的數的差值的絕對值大小大於d。直接遞推,設第乙個數為a,則第二個數顯然最大為n,那麼可以推出a n d 1,第三個數為a 1,第四個數為a d。以此可遞推出第i個數大小為,分奇偶性,i為奇數時,其為a i 1 2,偶數時,a d i 4 ...

2018湖南省賽總結

2018湖南省賽總結 省賽銅牌,有點可惜,被乙個打表題卡了三個小時。其實這題完全可以早點出的。寫一下省賽比賽的心路歷程吧。這個對以後的比賽有用。9點比賽,8.55發的題面。發完題面之後,立馬發現a題是簽到題,立馬丟給zqg寫,很快一發a了a題,之後的題都沒有那麼明顯的簽到,讀完b題之後,和隊友說題意...

12屆湖南省賽 F 地鐵

problem f 地鐵 time limit 5 sec memory limit 128 mb submit 84 solved 8 submit status web board description bobo 居住在大城市 icpccamp。icpccamp 有 n 個地鐵站,用 1,2,...