POJ 3225 Help with Intervals(線段樹)

POJ 3225 Help with Intervals

題目鏈接

集合數字有的為1,沒有為0,那么幾種操作相應就是置為0或置為1或者翻轉,這個隨便推推就能夠了,然后開閉區間的處理方式就是把區間擴大成兩倍,偶數存點,奇數存線段就可以

代碼:

#include <cstdio>
#include <cstring>#define lson(x) ((x<<1)+1)
#define rson(x) ((x<<1)+2)const int N = 65536 * 2;struct Node {int l, r, flip, setv;
} node[N * 4];int to[N];void build(int l, int r, int x = 0) {node[x].l = l; node[x].r = r;node[x].flip = 0; node[x].setv = -1;if (l == r) {to[l] = x;return;}int mid = (l + r) / 2;build(l, mid, lson(x));build(mid + 1, r, rson(x));
}void pushdown(int x) {if (node[x].setv != -1) {node[lson(x)].setv = node[rson(x)].setv = node[x].setv;node[lson(x)].flip = node[rson(x)].flip = 0;node[x].setv = -1;}if (node[x].flip) {node[lson(x)].flip ^= 1;node[rson(x)].flip ^= 1;node[x].flip = 0;}
}void add(int l, int r, int v, int x = 0) {if (l > r) return;if (node[x].l >= l && node[x].r <= r) {if (v != -1) {node[x].setv = v;node[x].flip = 0;} elsenode[x].flip ^= 1;return;}pushdown(x);int mid = (node[x].l + node[x].r) / 2;if (l <= mid) add(l, r, v, lson(x));if (r > mid) add(l, r, v, rson(x));
}void query(int x = 0) {if (node[x].l == node[x].r) {if (node[x].setv == -1) node[x].setv = 0;return;}pushdown(x);int mid = (node[x].l + node[x].r) / 2;query(lson(x));query(rson(x));
}char c, a, b;
int l, r;int main() {build(0, N - 1);while (~scanf("%c %c%d,%d%c\n", &c, &a, &l, &r, &b)) {l = l * 2 + (a == '(');r = r * 2 - (b == ')');if (c == 'U') add(l, r, 1);if (c == 'I' || c == 'C') {add(0, l - 1, 0);add(r + 1, N - 1, 0);if (c == 'C') add(l, r, -1);}if (c == 'D') add(l, r, 0);if (c == 'S') add(l, r, -1);}query();int pre = 0, flag = 0, bo = 0;for (int i = 0; i < N; i++) {int id = to[i];int tmp = (node[id].setv^node[id].flip);if (!tmp && flag) {if (bo) printf(" ");else bo = 1;if (pre % 2) printf("(");else printf("[");printf("%d,%d", pre / 2, i / 2);if (i % 2 == 0) printf(")");else printf("]");flag = 0;} else if (tmp && !flag) {pre = i;flag = 1;}}if (bo == 0) printf("empty set");printf("\n");return 0;
}


轉載于:https://www.cnblogs.com/yfceshi/p/7027373.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370309.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370309.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370309.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在Spring中嵌入HSQLDB服務器實例

我一直在愉快地使用XAMPP進行開發&#xff0c;直到不得不將其托管在可通過Internet訪問的某個地方&#xff0c;供客戶端進行測試和使用。 我有一個僅具有384 RAM的VPS&#xff0c;并且需要快速找到一種方法&#xff0c;因此決定將XAMPP安裝到VPS中。 由于內存不足&#xff0c;因…

python與材料計算公式_《從問題到程序:用Python學編程和計算》——2.11 補充材料-阿里云開發者社區...

本節書摘來自華章計算機《從問題到程序&#xff1a;用Python學編程和計算》一書中的第2章&#xff0c;第2.11節&#xff0c;作者 裘宗燕&#xff0c;更多章節內容可以訪問云棲社區“華章計算機”公眾號查看。2.11 補充材料本書各章的主要內容將圍繞著怎樣通過編程解決計算問題…

centos 6.9 NTP基準時間服務器配置

時間服務器端 yum install ntp -y vim /etc/ntp.conf 增加允許客戶端訪問 restrict 192.168.0.0 mask 255.255.0.0 nomodify 配置成自啟動 chkconfig ntpd on service ntpd start 客戶端配置 每天對時一次 crontab -e * 2 * * * ntpdate 192.168.139.130 轉載于:https://www.cn…

hsdfz -- 6.16 -- day1

恩這回不寫游記了 按照老師要求記錄今天的心里路程&#xff1a;這題似乎可做期望得分150->日部分分似乎不是很顯然->a題似乎是結論題&#xff0c;大力猜一波結論->過不了樣例&#xff0c;先看b題->b題動態樹&#xff0c;似乎可以肝lct->不會維護重鏈&#xff0c…

課時39.細線表格(理解)

請你設計出以下圖片里的這個樣式的表格 步驟&#xff1a; 我先來制作一個兩行兩列的表格 2.將table里的cellspacing設置成0 外邊距是不見了&#xff0c;但是和我們想要完成的圖片有一定的差距&#xff0c;我們發現這樣做出來的圖片好像是兩條線合并到了一起一樣&#xff0c;實…

強制Tomcat通過SLF4J / Logback登錄

因此&#xff0c;您將JAR可執行Web應用程序與Tomcat捆綁在一起 &#xff08;請務必先閱讀其中一個&#xff09;。 但是&#xff0c;開頭有這些煩人的Tomcat日志&#xff0c;與我們的應用程序日志無關&#xff0c;并且不可自定義&#xff1a; Nov 24, 2012 11:44:02 PM org.apa…

matlab拼碎紙片過程,碎紙片拼接復原模型

1. 引言破碎文件的拼接在司法物證復原、歷史文獻修復以及軍事情報獲取等領域都有著重要的應用。企事業、機關、院校和軍隊基于保密的需要&#xff0c;使用碎紙機對重要文件&#xff0c;單據以及材料進行銷毀。一些重要的文件隨著時間流逝&#xff0c;殘破不全&#xff0c;因此&…

python實現貝葉斯分類器_python實現簡單的樸素貝葉斯分類器

本文使用的測試問題是“皮馬印第安人糖尿病問題”這個問題包括768個對于皮馬印第安患者的醫療觀測細節&#xff0c;記錄所描述的瞬時測量取自患者的年齡&#xff0c;懷孕和血液檢查的次數。所有患者都是21歲以上的女性&#xff0c;所有屬性都是數值型&#xff0c;而且屬性的單位…

VC++編譯MPIR 2.7.0

目錄 第1章編譯 2 1.1 簡介 2 1.2 下載 3 1.3 解決方案 4 1.4 創建項目 5 1.5 復制文件樹 6 1.6 不使用預編譯頭文件 8 1.7 包含目錄 9 1.8 定義宏 10 1.9 編譯前事件 11 1.10 修改 obj 的位置 13 1.11 編譯yasm 14 1.12 編譯匯編代碼 …

PHP大數據處理【轉】

1&#xff1a;硬件方面 普通的一個p4的服務器每天最多能支持大約10萬左右的IP&#xff0c;如果訪問量超過10W那么需要專用的服務器才能解決&#xff0c;如果硬件不給力 軟件怎么優化都是于事無補的。主要影響服務器的速度 有&#xff1a;網絡-硬盤讀寫速度-內存大小-cpu處理速度…

http1.X與2.0

HTTP HTTP 1.X HTTP是建立在TCP協議上的&#xff0c;HTTP協議的瓶頸及優化都是基于TCP協議本身的特性。TCP建立連接時有三次握手 會有1.5RTT的延遲&#xff0c;為了避免每次請求都經歷握手待來的延遲&#xff0c;應用層會選擇不同策略的http長連接。 HTTP 1.0 連接不能復用以…

php代碼清除空格注解,去除php注釋和去除空格函數分享

雖然php5中已有php_strip_whitespace方法可以返回刪除注釋和空格后的PHP源碼的功能&#xff0c;為了學習&#xff0c;這里為大家提供一個自己的方法&#xff0c;也可以去除代碼中的空白和注釋&#xff0c;代碼如下&#xff1a;. 代碼如下:/*** 去除代碼中的空白和注釋* param s…

包裝的重要性

我記得大約15年前開始學習Java的時候。 我讀了很多有關“包裝”和“命名空間”的東西&#xff0c;但我完全不了解。 可悲的是&#xff1a;雖然包裝的某些方面幾乎為業內每個人所了解&#xff0c;但其他方面卻并非如此。 因此&#xff0c;讓我們看一下哪些軟件包最適合。 命名空…

我的python學習筆記全集_我的python學習筆記

(此文是在實際工程中遇到的一些小問題&#xff0c;給予解決和整理。解決方法大多來自網上零散的文章。)1——如下代碼&#xff0c;a[1,2,3]bab也是[1,2,3]了&#xff0c;接著a[0]4a[1]5a[2]6此時a變成[4,5,6]了&#xff0c;再看b&#xff0c;a變了之后沒有對b進行新的引用&…

課時28.假鏈接(掌握)

什么是假鏈接&#xff1f; 就是點擊之后不會跳轉的鏈接我們稱之為假鏈接。 假鏈接存在的意義&#xff1f; 在企業開發前期&#xff0c;其他界面都沒有寫出來&#xff0c;那么&#xff0c;我們就不知道應該跳轉到什么地方&#xff0c;所以就只能使用假鏈接來代替&#xff0c;…

筆記45 | 代碼性能優化建議[轉]

地址 筆記45 | 代碼性能優化建議[轉] 目錄 前言避免創建不必要的對象選擇Static而不是Virtual常量聲明為Static Final避免內部的Getters/Setters使用增強的For循環使用包級訪問而不是內部類的私有訪問避免使用float類型使用庫函數謹慎使用native函數關于性能的誤區前言 通常來說…

導彈攔截

鏈接 分析&#xff1a;經典DP題&#xff0c;最長不下降子序列的變種&#xff0c;同時需要記錄路徑&#xff0c;用pre[]數組記錄當前結點的前一個結點的方法很妙 1 #include "iostream"2 #include "cstdio"3 #include "cstring"4 #include "…

JUnit4參數化和理論示例

我始終依靠TestNG將參數傳遞給測試方法&#xff0c;以便為我的測試或套件提供一些靈活性。 但是&#xff0c;使用JUnit4可以實現相同的靈活性。 要使用它很簡單&#xff1a; package com.marco.test;import java.util.Arrays;import java.util.Collection;import junit.fram…

楊杰matlab神經網絡30例,MATLAB神經網絡30例

實例1 BP神經網絡在非線性函數擬合中的應用11.1 理論基礎11.1.1 BP網絡概述11.1.2 BP神經網絡的MATLAB函數21.2 非線性函數擬合方法6實例2 主元BP神經網絡在股票價格預測中的應用122.1 理論基礎122.1.1 主成分分析的原理122.1.2 主元神經網絡與股票預測142.2 股票價格的預測方法…

HTMLCSS 問題

1.子div使用浮動&#xff0c;父div高度自適應(個人感覺好用) 方法&#xff1a; css: <style> .clear{ clear:both} </style> html&#xff1a;在父div關閉之前添加<div class"clear"></div> 本文轉載于:猿2048?https://www.mk2048.com/…