啊啊啊,剛學線段樹,用線段樹寫這題不斷的tle!我自己弄了15000個資料,秒算的,結果還是說我tle,搞了2個小時沒看出**能超時— —。
然後用之前學的樹狀。十分鐘就搞定了,兩種**都先放這裡,線段樹那個以後再拿出來看看**tle
/********樹狀陣列解法*************/
#include#includeusing namespace std;
int c[35000],sum[15010];
int getsum(int i) //查詢0到i區間的數值狀況
return s;
}void update(int i,int value)//更新0到i區間的數值狀況
}int main()
;star * build(int l , int r )
return root;
}void insert(int c, int d , star *root )
}int count(star *root,int c,int d)
} }int main()
{ int n,i,j,x,y,s;
star *root;
scanf("%d",&n);
root=build(0,32100);
for(i=0;i
POJ 2352 樹狀陣列(線段樹)
題意 給出n個點的座標 n 15000 座標範圍為 1,32000 最後讓你輸出ans i 表示有ans i 個點左下方有i個點。一開始直接寫的二維樹狀陣列,記錄乙個矩陣,如果 x,y 有點就是1,沒有點就是0,那麼我們可以輕易求出 1,1 到 x,y 共有多少點,不過這樣就爆了10倍記憶體。1k ...
Poj2352 樹狀陣列或線段樹
確定星星的等級 就是他左下方星星的數目 又因為星星本來就是從左下到右上輸出的。所以直接搞就好。其實就是輸入乙個數 求之前小於等於這個數的數量x 然後a x 然後統計a x include include include include const int maxn 35002 const int n...
poj 2352 樹狀陣列
這道題好像被賤做了,看起來像二維的樹狀陣列,其實只是一維的,可能是資料太大了,矩陣開不那麼大,因為題意是求乙個矩陣中做它左下部分的個數,而去輸入的順序是按y公升序,後x公升序輸入。其實如果不按這個順序可以下排序。然後就是一維的樹狀陣列的思路了。轉個圖,可以知道它的這陣列性質了 include inc...