NOIP 借教室(線段樹)

2021-08-08 22:17:30 字數 1130 閱讀 2138

題解明天寫(因為今天腦子好像沒了)

來了……ps:該題正解是貪心。

用線段樹做的原因是被坑了。

區間修改,記錄乙個treemin,當treemin<0就輸出答案。

洛谷95分 codevs ac的**:

#include

#include

#include

#include

#define lson num<<1,l,mid

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

using

namespace

std;

int n,m;

int j;

bool flag=1;

const

int maxn=1000000+5;

int tree[maxn<<2],treemin[maxn<<2],lazy[maxn<<2],a[maxn];

void push_up(int num)

void push_down(int num,int len)

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

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

build(lson);

build(rson);

push_up(num);

return;

}void update(int l,int r,int delta,int num,int l,int r)

return;

}if (lazy[num]) push_down(num,r-l+1);

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

if(l<=mid) update(l,r,delta,lson);

if(r>mid) update(l,r,delta,rson);

push_up(num);

return;

}}void read(int &a)

while(c>='0'&&c<='9')

a*=h;

}int main()

if(flag) cout

<<0

<<'\n';

return

0;}

NOIP 2012 借教室 線段樹

水題,但是裸的線段樹複雜度太高,要用帶標記的線段樹,第一次寫這種題,也算來打個備忘。每訪問到乙個結點就先傳一下標記,然後每次修改某個點的標記時再傳一下標記。不過我各種常數優化都試過可怎麼就第20個點還超15ms 難不成是蒟蒻光環專屬特效?include include include using n...

NOIP2012 借教室 (線段樹)

author hany01 date nov 5th.2017 include define for i j k for int i j i end k i i end i define fordown i j k for int i j i end k i i end i define set a...

NOIP2012 借教室 線段樹

題目鏈結 看這道題的時候,題目中的借教室我們可以看作是區間修改,如果有一天不符合的話都不行,第一反應就是線段樹,維護最小值,查詢的時候看是否滿足要求,滿足的話就區間修改。以此類推,直到出現不滿足的情況。但是由於常數問題還是要o2優化才能過,不然只有95分。如下 includeusing namesp...