銀川區域賽現場賽 Pot 線段樹

2022-09-06 19:51:08 字數 2831 閱讀 1984

給定兩個操作:

multiply l r x  區間裡都乘以乙個數x

max l r : 計算區間內乙個2,3,5,7個數最大值。

思路:維護4個最大值。藍瘦。

1

/** 有 n 個數和 5 種操作

2add a b c:把區間[a,b]內的所有數都增加 c

3set a b c:把區間[a,b]內的所有數都設為 c

4sum a b:查詢區間[a,b]的區間和

5max a b:查詢區間[a,b]的最大值

6min a b:查詢區間[a,b]的最小值7*/

8 #include 9

using

namespace

std;

10const

int maxn = 2e5 + 7;11

const

long

long inf = 1ll << 62;12

int pri=;

13struct

segment_tree

14 tre[maxn << 2

];20

long

long arr[maxn*4];//

需要輸入的陣列

21 inline void push_up(int

rt)22

27 tre[rt].sum = tre[rt<<1].sum + tre[rt<<1|1

].sum;

28 tre[rt].max = max(tre[rt<<1].max, tre[rt<<1|1

].max);

29 tre[rt].min = min(tre[rt<<1].min, tre[rt<<1|1

].min);30}

31 inline void push_down(int

rt)32

48if

(tre[rt].add_lazy)

4961}62

void build(int rt,int l,int

r)63

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

;74 build(rt<<1

,l,mid);

75 build(rt<<1|1,mid+1

,r);

76push_up(rt);77}

78void update1(int rt,int l,int r,long

long val)///

add79

89int mid = (tre[rt].l + tre[rt].r) >> 1;90

if(r <=mid)

9194

else

if(l >mid)

9598

else

99103

push_up(rt);

104}

105void update2(int rt,int l,int r,long

long val)///

set106

116int mid = (tre[rt].l + tre[rt].r) >> 1

;117

if(r <=mid) else

if(l >mid) else

125push_up(rt);

126}

127long

long query1(int rt,int l,int r)///

sum128

133int mid = (tre[rt].l + tre[rt].r) >> 1

;134

if(r <=mid) else

if(l >mid) else

141}

142long

long query2(int rt,int l,int r)///

max143

148int mid = (tre[rt].l + tre[rt].r) >> 1

;149

if(r <=mid) else

if(l >mid) else

156}

157long

long query3(int rt,int l,int r)///

min158

163int mid = (tre[rt].l + tre[rt].r) >> 1

;164

if(r <=mid) else

if(l >mid) else

171}

172 }st[10

];173

intmain()

191}

192}

193 }else

199 printf("

answer ");

200 printf("

%lld\n

",ans);

201}

202}

203return0;

204}

205206

/*207

5 6208

multiply 3 5 2

209multiply 2 5 3

210211

max 1 5

212multiply 1 4 2

213multiply 2 5 5

214max 3 5

215216

*/

2017南寧區域賽現場賽

記憶化搜尋 貪心根據情況分類討論一下就行 如果強的人為偶數 那麼肯定是他們自相殘殺 否則要拿出乙個弱的人和乙個強的人比賽 他們之間的勝負情況 要討論一下 如果沒有弱的人了 那麼肯定只能和強的人打 記憶化搜尋 維護強的人和弱的人個數 容易發現 強的人和弱的人一定時 答案也是一定的 於是可以用map記錄...

2015 北京區域賽現場賽1C 裸的BFS

本來以為是個dp,想這怎麼轉移,一直不會做,後來看了題解發現好簡單 1.對於兩種操作的這類問題,要想好操作的順序會不會影響,這題而言,如果你是操作1和操作2間歇著做的話,一定不如把操作二都做完之後再對那些做過操作一的做一次操作 想一想就知道了,當時也想找到操作之間的關係,可是沒發現,好題啊!2.考慮...

HPU組隊賽J Ball King(線段樹)

時間限制 1 second 記憶體限制 512 mb hpu601球王爭霸賽即將舉行,acmer紛紛參加.現在有n個人報名參賽,每個人都有乙個實力值 ai,實力值較大者獲勝.為保證比賽公平,我們定義比賽規則 第一輪 1,2 pk,然後 3,4 pk.最後 2i 1,2i pk.第二輪 1,2 w i...