題解明天寫(因為今天腦子好像沒了)
來了……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...