模擬 線段樹 hdu4262 Juggler

2021-06-08 22:25:26 字數 930 閱讀 6553

juggler

題目:題意:

有個數字圓環。三種操作:逆時針轉乙個,順時針轉乙個,丟掉手中的那個的同時順時針的數字到你的手裡。每個操作都花費一秒。告訴你要求的出圈順序,求最小花費時間。注:開始在手中的球為1.

題解:假設當前要移除的珠子為i,我們會發現無論左移還是右移都會得到同乙個序列,即移去某個數字對後面的數字序列無影響,所以每次只需單獨考慮左移和右移的長度,取最小累加即可。

**:#include#include#include#includeusing namespace std;

#define max 100005

#define ab(x) ((x)>0?(x):-(x))

int summ[max<<2];//區間內有幾個數字

int pos[max];//詢問順序

void push_up(int idx)

void build(int l,int r,int idx)

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

build(l,mid,idx<<1);

build(mid+1,r,idx<<1|1);

push_up(idx);

}void update(int p,int l,int r,int idx)

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

if(p<=mid) update(p,l,mid,idx<<1);

else update(p,mid+1,r,idx<<1|1);

push_up(idx);

}long long query(int a,int b,int l,int r,int idx)

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

long long ans=0;

if(a<=mid) ans+=query(a,b,l,mid,idx<<1);

if(mid

hdu 4262 線段樹優化

include include include includeusing namespace std define lson u 1 define rson u 1 1 define maxn 100005 int map maxn struct nodet maxn 2 void pushup i...

NOIP模擬 線段樹 標記下傳 Query

題目描述 萬惡的大頭又出現了!他正在玩乙個智障遊戲 打怪獸。現在大頭的螢幕上出現了一排怪獸,每只怪獸頭上有乙個血條,每次大頭可以選擇乙個區間進行攻擊,攻擊值為 k 這個區間中血量小於 k 的怪獸都會被大頭無情地乾掉,當然怪獸不會坐以待斃,對於乙個區間的怪獸,他們會在某個時刻血量同時加 x 大頭頭雖然...

hdu 預處理 線段樹)

給n個數,m個詢問,問任意區間內與其它數互質的數有多少個 比如3個數1 2 4,詢問 1,3 那麼答案是1 千萬要記住,這樣的題目,如果你不轉變下,使勁往線段樹想 雖然轉變之後,也說要用到線段樹,但是維護的東西不同了 那麼會發現這樣的題目,區間與區間之間是無法傳遞資訊的,區間與區間是無法傳遞資訊的,...