題目鏈結[
題意:輸入n、q。表示有n個數,初始化預設這n個數都為零,有q次操作,操作種類分為三種:1、輸入k,d,使得k位置的數加上d。2、輸入l,r,求區間[l,r]的和並輸出。3、輸入l,r,把區間[l,r]內的數都改成斐波拉契數,修改方式為使得fabs[x-f[i]]最小,如果有多個f[i]滿足情況,用最小的那個f[i]。1 ≤ n ≤ 100000, 1 ≤ m ≤ 100000, |d| < 231。
#includeusingnamespace
std;
typedef
long
long
ll;const
int maxn = 100050
;int
n, m;
struct
node
t[maxn
<< 2
];ll f[
150];
void
init()
ll fbi(ll x)
}void pushup(int
id)void pushdown(int
id)}
void build(int id, int l, int
r)
else
}ll sum(
int id, int l, intr)}
void change(int id, int l, int
r)
else
else
if(l >= mid + 1
)
else
pushup(id);
}}void update(int id, int
pos, ll d)
else
}int
main()
else
if(ty == 2
)
else}}
return0;
}
hdu 4893 線段樹 二分fib
這道題題意很清楚 就是線段樹的運用,其中的第三個操作,也就是將乙個數轉變為與這個數相鄰最小fib數 如果直接操作,因為操作次數很多,應該會tle,我們可以在每個樹節點上加個cover變數,如果等於1,那麼表示這個區間裡的數已經是fib數了,不需要再更改了,這樣就避免時間的浪費 標準模板 表示,自己敲...
線段樹HDU 1166(單點增減 區間求和)
應用 區間最值查詢問題 區間求和 連續區間的修改或單點更新 例題 hdu 1166敵兵布陣 線段樹功能 add 單點增減 sum 區間求和 include include include include include include includeusing namespace std defin...
HDU1166 線段樹區間求和,單點更新
problem description c國的死對頭a國這段時間正在進行軍事演習,所以c國間諜頭子derek和他手下tidy又開始忙乎了。a國在海岸線沿直線布置了n個工兵營地,derek和tidy的任務就是要監視這些工兵營地的活動情況。由於採取了某種先進的監測手段,所以每個工兵營地的人數c國都掌握的...