解題思路:看到題目,經典的區間查詢+區間修改,我們用線段樹維護一段區間的最小值,每當有新的訂單,我們就先查詢訂單時間範圍內的最小教室數量,然後與dj作比較,如果比dj小,那麼我們可以標記為false,然後後面的操作都不用看了,因為他只要求輸出第乙個不滿足的訂單,否則就按照訂單進行區間修改,即在該訂單的開始時間和結束時間這個範圍內都減少dj個教室。
code:
#includeusing namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f3f3f3f3f;
const int n = 1000005;
ll a[n],tree[n<<2],lazy[n<<2];
int n,m;
void pushup(int k)
void pushdown(int k)
}void build(int l,int r,int k)
else
}void updata(int l, int r, int v, int l, int r,int k)
else
if(r > mid)
pushup(k); }}
ll query(int l,int r,int l,int r,int k)
else
if(r > mid)
return res; }}
int main()
build(1,n,1);
int fg = 0;//這個標記是否已經不滿足條件
for(int i = 1;i <= m; ++i)
else
} if(!fg)
else
return 0;
}
NOIP 借教室(線段樹)
題解明天寫 因為今天腦子好像沒了 來了 ps 該題正解是貪心。用線段樹做的原因是被坑了。區間修改,記錄乙個treemin,當treemin 0就輸出答案。洛谷95分 codevs ac的 include include include include define lson num 1,l,mid ...
NOIP2012借教室 (線段樹區間操作)
輸入檔案 classrooms.in輸出檔案 classrooms.out簡單對比 時間限制 1 s 記憶體限制 128 mb 在大學期間,經常需要租借教室。大到院系舉辦活動,小到學習小組自習討論,都需要 向學校申請借教室。教室的大小功能不同,借教室人的身份不同,借教室的手續也不一樣。面對海量租借教...
NOIP 2012 借教室 線段樹
水題,但是裸的線段樹複雜度太高,要用帶標記的線段樹,第一次寫這種題,也算來打個備忘。每訪問到乙個結點就先傳一下標記,然後每次修改某個點的標記時再傳一下標記。不過我各種常數優化都試過可怎麼就第20個點還超15ms 難不成是蒟蒻光環專屬特效?include include include using n...