思路:把所有約束按照右端點排序。這樣每乙個前面的約束區間[l1,r1],與後面的乙個約束區間[l2,r2]的交,一定為[max(l1 ,l2 ),r1]。對於排序後的區間依次滿足約束,假設當前列舉到的約束還沒有滿足,就不斷把對應區間中最右端的0改為1,這些過程可以用線段樹維護來完成。時間複雜度o((n + m)logn)。
// 監視任務 執行/限制:898ms/2000ms
#include #include #include #include using namespace std;
#define lson le,mid,root<<1
#define rson mid+1,rig,root<<1|1
struct node
}a[1000005];
int sum[500005 << 2];
int book[500005];
void pushup(int root)
void build(int le, int rig, int root)
int mid = (le + rig) >> 1;
build(lson);
build(rson);
pushup(root);
}int query(int l, int r, int le, int rig, int root)
int re = 0;
int mid = (le + rig) >> 1;
if (l <= mid)
if (r > mid)
return re;
}void update(int pos, int le, int rig, int root)
int mid = (le + rig) >> 1;
if (pos <= mid)
else
pushup(root);
}int main()
build(1, n, 1);
sort(a, a + m);
for (int i = 0; i < m; i++)
} printf("%d\n", ans);
} return 0;
}
Wannafly模擬賽4 題解
a fst是一名可憐的小朋友,他很強,但是經常fst,所以rating一直低迷。但是重點在於,他非常適合acm!並在最近的區域賽中獲得了不錯的成績。拿到獎金後fst決定買一台新筆記本,但是fst發現,在 能承受的範圍內,筆記本的記憶體和速度是不可兼得的。可是,有一些筆記本是被另外一些 完虐 的,也就...
Wannafly 模擬賽A Laptop 樹狀陣列
題解 樹狀陣列 二維偏序。要同時滿足i.a j.a,i.b j.b才算完虐,然後這道題不想求逆序數那樣可以求出多對逆序,這道題只能求出多少個被完虐。所以我們排完第乙個序列之後就給編號,然後排序第二個序列,再離散化,然後就進入像計算逆序數那樣計算了,但是這裡有點不同,因為是要同時滿足i.a j.a,i...
Wannafly模擬賽3 生物課程
思路 水題,按照三種無向圖的結構特點判斷,具體為判斷節點度數 x有乙個4度節點,其他的節點最多為2度 y有乙個3度節點,其他的節點最多為2度 i的節點度數最多為2度。還可以看出另乙個約束條件為 圖是連通的,加上沒有重邊和自環的限制,其實就是說明三種圖均為樹形結構。生物課程2 執行 限制 27ms 1...