zoj 3635 線段樹 區間求位置 單點更新

2021-06-09 03:54:14 字數 800 閱讀 5905

zoj 3635   

題意:輸入乙個n,表示有 n 個空位,接下來就是 n 個數,

第 i 個數 ai 表示第 i 個人要在坐在第 ai 個空位上;在輸入乙個 m 表示有 m 次訪問,

每次訪問輸入乙個整數 bi 表示第 bi 個人坐的位置標號。

分析:採用線段樹,線段樹里存放的是這一段裡有多少個空位,從下往上更新,時間複雜度o(nlogn)。

#include#include#include#includeusing namespace std;

#define lson rt<<1,l,mid

#define rson rt<<1|1,mid+1,r

const int maxn=50002;

int sum[maxn<<2],pos[maxn<<2];

void pushup(int rt)

//void pushdown(int rt)

void build(int rt,int l,int r)

int mid=(l+r)>>1;

build(lson);

build(rson);

pushup(rt);

}void updata(int rt,int l,int r,int ans,int num,int idx)

int mid=(l+r)>>1;

if(sum[rt<<1]+ans=1)

for(i=2; i<=m; i++)

printf("\n");

}return 0;

}

ZOJ 1610 線段樹區間染色

給長度8000公尺的板,對其中區間染色,問最後能看到的顏色,和該顏色一共出現了幾段 線段覆蓋法 資料比較水 也可以暴力水過 線段樹 include stdio.h include string.h struct node data 40010 int color 8011 void build in...

ZOJ 1610 (線段樹區間set)

題意 在一段線段上塗色,新塗的顏色會覆蓋舊的,問最後每種顏色各有多少段。思路 線段樹區間覆蓋,最後dfs查詢一遍把每個位置的顏色查詢出來,再掃一遍統計有多少段。include include include include include include include include includ...

ZOJ 1610 線段樹區間更新

裸題。注意到只有一次查詢,那麼查詢的時候直接到葉子節點將葉子節點的值放到陣列中,統計結果相當於離散化的乙個過程。對於這道題來說我們進行區間更新不需要像普通的那種求區間和的那樣建立lazy標記,因為我們最後只關心葉子節點的值,故不需要lazy標記。注意的地方,區間長度為 1,8000 在這個區間上進行...