排隊 白雪公主與n個小矮人

2022-05-20 22:30:40 字數 1849 閱讀 4153

【問題描述】

在七山七海之外的乙個小村莊,白雪公主與n個矮人住在一起,所有時間都花在吃和玩league of legend遊戲。白雪公主決心終結這樣的生活,所以為他們舉辦了體育課。 在每節課開始時,矮人必須按他們的身高站隊。假定矮人們有高度1,2,...,n(每個人高度互不相同)。然而,由於不健康的生活方式,矮人的智力有所惡化,所以他們沒有能力依照自己的高度排序。

因此,白雪公主發出以下形式命令幫助他們:

1 x y:x和y位置的矮人互換位置。

2 a b:詢問高度為a,a+1,..., b的矮人(不一定是按照這個順序)是否已形成了當前佇列的連續子串行。

幫助矮人按照白雪公主的指示行動,並回答她的問題。

【輸入格式】

輸入的第一行包含兩個正整數n和m,分別表示矮人的數量和白雪公主的命令數,2≤n≤200,000,2≤m≤200,000。

第二行包含n個用空格隔開的從1到n的正整數,每個數隻出現一次,代表矮人的初始排列。

接下來的m行包含白雪公主的命令,形式為「1 x y」(1≤x,y≤n,x≠y)或「2 a b」(1≤a≤b≤n)。

【輸出格式】

對於每個命令2輸出「yes」或「no」。

solution

解法1:按高度建樹,每次找區間最大 最小值

解法2:按位置直接建樹,每次找的時候,隨便在詢問區間找乙個數

左右延伸判斷   (我沒打...)

1 #include2 #include3 #include4

using

namespace

std;

5const

int n=200006;6

void swap(int &x,int &y)

7int maxn(int a,int b)

8int minn(int a,int b)910

intn,m,u;

11int

v[n],pos[n];

1213

struct

son14

;17 son a[n*5

];18

void pushup(int

x)19

23void build(int l,int r,int

x)24

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

;31 build(l,mid,x<<1

);32 build(mid+1,r,x<<1|1

);33

pushup(x);34}

35void changedian(int pos,int val,int l,int r,int

x)36

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

if(pos<=mid)

44 changedian(pos,val,l,mid,x<<1

);45

else

46 changedian(pos,val,mid+1,r,x<<1|1

);47

pushup(x);48}

49int qqmax(int l,int r,int l,int r,int

x)50

61int qqmin(int l,int r,int l,int r,int

x)62

73int

main()

81 build(1,n,1

);82

while(m--)

8392

else

93101

}102

//while(1);

103return0;

104 }

解法1

白雪公主和小矮人 乙個女人的夢想

白雪公主和七個小矮人 乙個女人的夢想和數個男人的悲哀2 拔劍 2009 12 16 二前世今生 白雪公主和七個小矮人 由19世紀德國民間文學研究者格林兄弟編寫的童話 白雪公主 改編而成,並在在美國迪斯尼公司的推廣下名揚全球。用已故武俠 大家古龍的話說,雖然從來沒有人親歷這個故事,可是江湖上沒有乙個小...

白雪公主與七個爺爺 衝刺日誌(第五天)

這個作業屬於哪個課程 這個作業要求在 homework 10841 團隊名稱 白雪公主與七個爺爺 這個作業的目標 衝刺第五天 作業正文 見下文其他參考文獻無組員 今日完成任務 耗時樑明無0 肖璐瑤編寫博文 不計入專案耗時 李子妍無0胡靚 無0曾揚威無 0周佳欣無0 肖顥璇無0王佳 無0肖璐瑤 困難問...

白雪公主與七個爺爺 衝刺日誌(第二天)

這個作業屬於哪個課程 這個作業要求在 homework 10841 團隊名稱 白雪公主與七個爺爺 這個作業的目標 衝刺第二天 作業正文 見下文其他參考文獻 無肖璐瑤 困難問題 心得體會 日曆半成品 樑明 專案進展 困難問題 心得體會 打卡介面 曾揚威 困難問題 心得體會 今天又完成了乙個介面,但是很...