日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > poj 3225 Help with Intervals(線段樹)

poj 3225 Help with Intervals(線段樹)

來源:程序員人生   發布時間:2014-10-02 08:00:00 閱讀次數:2838次

題目鏈接:poj 3225 Help with Intervals

題目大意:模擬集合操作,輸出最終的集合。

解題思路:線段樹。

  • U l r:[l,r]區間置為1
  • I l r:[0,l),(r,maxn]置為0
  • D l r:[l,r]區間置為0
  • C l r:[0,l),(r,maxn]置為0,[l,r]區間取逆
  • S l r:[l,r]區間取逆。

然后基本水水的線段樹,注意一下區間開和閉。

#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn = 65535 * 2; #define lson(x) ((x)<<1) #define rson(x) (((x)<<1)+1) int lc[maxn * 4], rc[maxn * 4], set[maxn * 4], filp[maxn * 4]; inline void splay(int u) { filp[u] ^= 1; if (filp[u] && set[u] != -1) { filp[u] = 0; set[u] ^= 1; } } inline void maintain(int u, int v) { set[u] = v; filp[u] = 0; } inline void pushdown (int u) { if (set[u] != -1) { maintain(lson(u), set[u]); maintain(rson(u), set[u]); set[u] = -1; } if (filp[u]) { splay(lson(u)); splay(rson(u)); filp[u] = 0; } } void build (int u, int l, int r) { lc[u] = l; rc[u] = r; maintain(u, -1); if (l == r) { maintain(u, 0); return; } int mid = (l + r) / 2; build (lson(u), l, mid); build (rson(u), mid + 1, r); } void modify (int u, int l, int r, int v) { if (l > r) return; if (l <= lc[u] && rc[u] <= r) { maintain(u, v); return; } pushdown(u); int mid = (lc[u] + rc[u]) / 2; if (l <= mid) modify(lson(u), l, r, v); if (r > mid) modify(rson(u), l, r, v); } void change (int u, int l, int r) { if (l > r) return; if (l <= lc[u] && rc[u] <= r) { splay(u); return; } pushdown(u); int mid = (lc[u] + rc[u]) / 2; if (l <= mid) change(lson(u), l, r); if (r > mid) change(rson(u), l, r); } int query (int u, int x) { if (lc[u] == x && x == rc[u]) return set[u]; pushdown(u); int mid = (lc[u] + rc[u]) / 2; if (x <= mid) return query(lson(u), x); else return query(rson(u), x); } int L, R; char op, LP, RP; inline void put (int left, int right) { if (left&1) printf("(%d,", left/2); else printf("[%d,", left/2); if (right&1) printf("%d)", (right + 1) / 2); else printf("%d]", right / 2); } int main () { build (1, 0, maxn); while (~scanf("%c%*c%c%d,%d%c%*c", &op, &LP, &L, &R, &RP)) { L *= 2; R *= 2; if (LP == '(') L++; if (RP == ')') R--; if (op == 'U') { modify(1, L, R, 1); } else if (op == 'I') { modify(1, 0, L - 1, 0); modify(1, R + 1, maxn, 0); } else if (op == 'D') { modify(1, L, R, 0); } else if (op == 'C') { change(1, L, R); modify(1, 0, L - 1, 0); modify(1, R + 1, maxn, 0); } else if (op == 'S') change(1, L, R); } bool flag = false; int c = 0, t; for (int i = 0; i <= maxn; i++) { int s = query(1, i); if (s && !flag) { t = i; flag = true; } else if (!s && flag) { if (c++) printf(" "); put(t, i-1); flag = false; } } if (c == 0) printf("empty set "); else printf(" "); return 0; }
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲精品网站免费 | 日韩成人免费在线 | 精品国产一区二区三区免费 | 亚洲男人网 | 国产精品久久中文字幕 | 国产高清精品在线 | 久久九九精品久久 | 精品久草| 国产精品一区一区三区 | 999在线视频 | 亚洲一区精品视频 | 久久国产精品-国产精品 | 亚洲一区二区三区四区五区中文 | 成人一区二区三区四区 | 国产精品久久 | 麻豆免费视频 | 欧美成人精品一区二区三区 | 亚洲欧美一区二 | 91久久国产综合久久91精品网站 | 国产午夜久久 | 亚洲一级在线观看 | 91精品国产乱码久久久久久 | 黄色午夜视频 | 久久精品久久久久 | 99久久久国产精品免费调教网站 | 国产 第1163页| 亚洲成人tv | 精品久久中文 | 中文av字幕| 亚州精品中文 | 中文字幕日韩欧美一区二区三区 | 日韩av影院在线 | 91精品国产一区二区 | 日韩精品一区二区在线 | 亚洲精品免费观看 | 精品一区二区三区中文字幕 | 亚洲毛片在线看 | 中文字幕免费播放 | 青青草网 | 久久精品国产一区 | 综合伊人 |