HDU 3577 線段樹區間更新

2022-04-05 07:32:43 字數 1000 閱讀 9645

題意:一輛火車,同一時間最多可以坐k個人,然後n個人依次買票,上車時間為a,下車時間為b,問這個人能不能上去,最後將所有的可以上車的人輸出

思路:將所有的時間看成區間,然後對於a到b,詢問這段中被覆蓋的最大次數,若不超過k,說明這個人可以上這段,然後更新就好了

#include

#include

#include

#include

#include

using namespace std;

const int maxn=1000010;

int num[maxn*4],num1[maxn*4],n,m;

void pushdown(int node)

}void update(int d,int a,int b,int le,int ri,int node)

pushdown(node);

int t=(le+ri)>>1;

if(a<=t) update(d,a,b,le,t,node<<1);

if(b>t) update(d,a,b,t+1,ri,node<<1|1);

num[node]=max(num[node<<1],num[node<<1|1]);

}int query(int a,int b,int le,int ri,int node)

int ans[maxn];

int main(){

int t,cas=1,a,b;

scanf("%d",&t);

while(t--){

scanf("%d%d",&n,&m);

memset(num,0,sizeof(num));

memset(num1,0,sizeof(num1));

int k=0;

for(int i=1;i<=m;i++){

scanf("%d%d",&a,&b);

int len=query(a,b-1,1,1000000,1);

if(len

HDU 1698 線段樹區間更新

之前一直覺得自己線段樹敲得很熟練,然後。某天。是的,就是我的資料結構周開始的時候我發現。我特麼才會單點更新是怎麼回事!只會區間查詢是腫麼回事!摔!恩。就是表達一下弱渣的心情。區間更新,用到延遲操作。延遲操作應該是這麼回事。線段樹的優越性就是體現在,第一是二分查詢,第二是區間操作。當我們需要多次對區間...

hdu1698線段樹(區間更新)

題目鏈結just a hook 乙個鎖鏈,其組成成部分有三種材料,金銀銅,分數為3 2 1,每次可以更換一段的材料,求最後的分數 鉤子最多長100,000 操作最多有100,000次,肯定不能暴力 線段樹 延遲標記lazy 每個節點新增加乙個標記 lazy 每次要更新節點時,不更新到葉節點,記錄這個...

HDU 1698 線段樹(區間更新

題目鏈結 思路 今天才入門線段樹,一開始做這題還有一點懵,因為我開始的思路是區間更新時要考慮之前的狀態,比如之前的乙個需要更新的節點是鐵 1 現在再要求更新為鐵 1 則不進行更新.然後就要分很多情況去討論,很麻煩.所以另外想了乙個思路 受懶操作的啟發,我想我能不能定義乙個向下傳遞的值type 傳遞後...