原创 POJ-1195 Mobile phones(二維樹狀數組裸題)
單純的二維樹狀數組與一維很相似,不多解釋了,看下代碼就懂了。 注意下二維和一維求和有些不同。 我的代碼: #include <cstdio> #include <algorithm> #include <iostream> #includ
原创 HDU 4836 The Query on the Tree (歐拉序列,線段樹,動態樹)
The Query on the Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi
原创 CodeForces 396C
題目大意: 給出一棵以1爲根的樹,形式是從節點2開始給出每個節點的父親節點;然後是m次操作,操作分爲兩種,1 v, x, k,表示在以v爲根的字數上添加,添加的法則是看這個節點與v節點的距離爲i的話,加上x-i*k;2 v查詢節點v
原创 HDU 1686 Oulipo - KID
題目大意: 給你兩個字符串,A,B,問A串中有多少個子串是B串。 解題方法: 簡單的字符串hash,不多解釋了。 我的代碼: #include <cstdio> #include <string> #include <
原创 HDU 4358 Boring counting(樹狀數組離線操作+歐拉序列)
題目大意: 有一顆樹,樹上的每個端點都有序號,並且每個端點都有個權重。 問以某個端點爲根節點的子樹中,出現了k次的權重的個數。 解決方法: 先dfs一下,將樹轉化爲區間。 先將區間排序(按照
原创 CodeFocrces 369E. Valera and Queries
題目大意: 給你許多的區間,有n個詢問,每個詢問給你k個點,問你包含這k個點的區間有多少個。 解決方法: 離線操作,對於每個詢問的點都化成區間,比如點2,5,就可以變化成3個區間1-1,3-4,6-n,然後求包含
原创 動態樹
動態樹是一種“超級數據結構”,它能夠維護一個由若干有根樹組成的森林,在對數的時間複雜度內支持: 1.查詢一個點的父親 2.查詢一個點所在的樹的根3.修改某個節點的權 4.向從某個節點到它所在的樹的根的路徑上的所有的節點的權增加一個數
原创 CodeForces 341D
題目大意: 兩種操作: Query(x0,y0,x1,y1) 將以(x0,y0)與(x1,y1)爲頂點的矩形區域^val Update(x0,y0,x1,y1)將以(x0,y0)與(x1,y1)爲頂點的矩
原创 HDU 4267 A Simple Problem with Integers
題目大意: 兩種操作: 1.a,b,k,v 對於下標i, a<=i<=b ,(i-a)%k==0,num[i]+=v; 2.a 求a位置數值的大小 解決方法:
原创 成爲it精英,我奮鬥7年(震撼!慚愧!!!轉)
這些日子 我一直在寫一個實時操作系統內核,已有小成了,等寫完我會全部公開,希望能夠爲國內IT的發展儘自己一份微薄的力量。最近看到很多學生朋友和我當年一樣沒 有方向 ,所以把我的經歷寫出來與大家共勉,希望能給剛如行的朋友們一點點幫助。 一
原创 poj 2155(二維樹狀數組)
題目大意: 兩種指令:1:C x1,y1,x2,y2 就是將左上角爲x1,y1,右下角爲x2,y2的這個矩陣翻轉,0變1,1變0,。 2: Q x,y 輸出(x,
原创 CodeForces 383C
題目大意: 有一顆樹,兩個操作: 1.x,val 將點x加上val,x的子節點,如果與x的距離爲偶數加上val,否則減去val。 2.x 求點x
原创 POJ 2299 Ultra-QuickSort(樹狀數組水題)
題目大意: 問將一個序列按照冒泡法從小到大排序,需要進行幾次交換。 解題方法: 計算每個數前面有幾個比它大的數,他們的和就是答案。 可以用樹狀數組完成上述操作,tree【n】表示遍歷到目前爲止,n一共出現
原创 poj 2352 && hdu 1541 Stars (樹狀數組水題)
題意:給出一些星星的橫座標和縱座標,而且星星的縱座標按非遞減排列,如果縱座標相等,則橫座標按遞增排列,任意兩顆星星不會重合。如果有n顆星星的橫座標比某顆星星小而且縱座標不大於那顆星星(即有n顆星星位於那顆星星的左下角或者左邊)則此星星的等
原创 hdu 4630 No Pain No Game(樹狀數組離線操作)
題目大意: 給你n個數分別爲a1,a2,a3,a4,a5,a6,a7.......an。 詢問 l.r 問區間[l.r]內的任意兩個數的最大公約數是多少? 解決方法: 首先對查詢區間按照左端點從大到小