暑期賽c題 儲存歷史狀態的樹狀陣列 二分

2021-07-22 03:51:27 字數 772 閱讀 7975

看了解題報告之後知道就是乙個儲存歷史狀態的樹狀陣列,儲存了以前時間的修改

然後查詢乙個操作時間的時候,在進行sum的時候每次都要找這個區間<= t的最大的時間修改的值,然後全部加起來

找<=t的最大時間的時候要用二分……不然會超時

這題是個空間和時間都很多的題……挺麻煩的不過也是有點收穫,在時間上利用樹狀陣列,記錄每個區間被修改都要新標記一次

#include#include#includeusing namespace std;

const int maxn = 1000010;

struct st

st()

};int n,q;

vectortree[maxn];

int cur[maxn];

int count (int x,int time)

else

} return tree[x][left].v;

}int count2(int x,int time)

return tree[x][ans].v;

}int lowbit(int x)

int sum(int x,int time)

return ret;

}void add(int x,int d,int time)

}int main()

for(int i = 1; i <= q; i++)

else

else

} } return 0;

}

c 如何儲存樹的展開狀態

前提 每個node有唯一標識的東東,我的示例中展現的是資料夾,每個tooltip是檔案 資料夾的路徑。不同的唯一標識的話,把關於tooltip的相關方面更改即可 private list listvisiblenodes new list private string lastselectednod...

天梯賽真題 樹的遍歷 遞迴

此題紀念一下一點都不擅長遞迴的我,非要用遞迴的方法來做,靠自己的力量,經過兩個小時最終成功的勵志故事!題意 給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。輸入格式 輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其後序遍歷序列。第三...

2018湘潭邀請賽C題(主席樹 二分)

比賽的時候知道這題是用主席樹 二分,可是當時沒有學主席樹,就連有模板都不敢套,因為 實在是太長了。題意 給你一些數字,要求你某些區間中找到乙個h index。每次查詢h index複雜度不能超過o n h index的定義是 有最少h個數不小於h,找到最大的h。分析 假如查詢的區間長度為n,那麼an...