演算法優化專題 C POJ 2777

2021-10-03 10:55:28 字數 1713 閱讀 5684

【題目大意】

長度為l的板被分成l段,每段長乙個單位長度 (1 <= l <= 100000),

有o個操作 (1 <= o <= 100000)

操作分兩種

c a b c 表示將區間[a,b]染成顏色c (1 <= c <= 30)

p a b 輸出[a,b]有多少種不同的顏色

開始時[1,l]的顏色為1

【解題思路】

觀察顏色的種數最多為30種。因此可以建30顆線段樹。tree[x]i表示有無這種顏色i。

【**】

#include

#include

#include

using

namespace std;

int l,t,o;

bool tree[

400004][

35];int d[

400004];

bool ans[35]

;void

build_tree

(int l,

int r,

int root)

void

down

(int root)

tree[lson]

[sym]

=true

; tree[rson]

[sym]

=true

; d[root]=0

; d[lson]

=sym;

d[rson]

=sym;

}void

update

(int l,

int r,

int l,

int r,

int root,

int c)

int mid=

(l+r)/2

;if(d[root]!=0

)down

(root)

;update

(l,mid,l,r,root*

2,c)

;update

(mid+

1,r,l,r,root*2+

1,c)

;for

(int i=

1;i<=t;i++

) tree[root]

[i]=

(tree[root*2]

[i]| tree[root*2+

1][i]);}

void

query

(int l,

int r,

int l,

int r,

int root)

int mid=

(l+r)/2

;if(d[root]!=0

)down

(root)

;query

(l,mid,l,r,root*2)

;query

(mid+

1,r,l,r,root*2+

1);for

(int i=

1;i<=t;i++

) tree[root]

[i]=

(tree[root*2]

[i]| tree[root*2+

1][i]);}

intmain()

if(ch==

'p')

}return0;

}

專題(一)優化演算法

2.動量 momentum 演算法 2.2 nag 演算法 nesterov 動量 3.自適應學習率的優化演算法 3.2 rmsprop 3.3 adadelta 3.4 adam 4.如何選擇優化演算法 5.基於二階梯度的優化演算法 微積分中使用梯度表示函式增長最快的方向 因此,神經網路中使用負梯...

演算法優化專題E POJ 2528

題目大意 有一塊長度為x的板 1 x 10000000 均分成x份,每份長乙個單位長度。現在有n張海報 1 n 10000 每張海報有個區間 li,ri 表示這張海報會占用 li,ri 的位置,若區間 li,ri 有其他海報,那麼這些海報會被新貼的覆蓋,按照輸入的順序貼這n張海報。問最後能看見多少張...

優化演算法介紹2

優化演算法介紹2 牛頓法 擬牛頓法介紹及其實現 上篇部落格介紹了利用梯度方法進行優化的幾個演算法,簡單來說就是通過計算損失函式的在當前點的梯度,衡量向哪個方向移動會獲得最快的降速,本篇所講的幾個演算法是它們的延伸。他們不僅計算出當前點的下降速度,而且還計算出當前下降速度的加速度,即這個下降速度會變大...