題目傳送門
描述 縣城裡有n個用地道相連的房子,第i個只與第i-1和第i+1個相連。這是有m個訊息依次傳來
1、訊息為d x:鬼子將x號房子摧毀了,地道被堵上。
3、訊息為q x:有一名士兵被圍堵在x號房子中。
李雲龍收到資訊很緊張,他想知道每乙個被圍堵的士兵能夠到達的房子有幾個。
輸入格式:
第一行2個整數n,m(n,m<=50000)。
接下來m行,有如題目所說的三種資訊共m條。
輸出格式:
對於每乙個被圍堵的士兵,輸出該士兵能夠到達的房子數。
輸入樣例#1:
7 9d 3d 6
d 5q 4
q 5r
q 4r
q 4
輸出樣例#1:
1024
若士兵被圍堵在摧毀了的房子中,那只能等死了。。。。。。
分析:本來想用這題隨便搞個平衡樹玩一下,結果就變成了$vector$水分23333。
是的這題很裸,如果有房子被摧毀就丟進平衡樹里維護,修好了就從平衡樹中刪除,如果詢問就在平衡樹中找前驅後繼算差值就行了,注意邊界問題以及士兵所在房子被摧毀的情況就行了。
無比清(nan)新(kan)的$vector$實現平衡樹。
code:
//it is made by holselee on 28th sep 2018
p1503
#include#include
#include
#include
#include
using
namespace
std;
const
int n=5e4+7
;int
n,m,las,h[n];
bool
des[n];
vector
v;inline
intread()
while( ch>='
0' && ch<='9'
)
return flag ? -num : num;
}void print(int
x)inline
intget(int
x)int
main()
else
if( op[0]=='r'
) else
}return0;
}
洛谷 P1503 鬼子進村
描述 縣城裡有n個用地道相連的房子,第i個只與第i 1和第i 1個相連。這是有m個訊息依次傳來 1 訊息為d x 鬼子將x號房子摧毀了,地道被堵上。3 訊息為q x 有一名士兵被圍堵在x號房子中。李雲龍收到資訊很緊張,他想知道每乙個被圍堵的士兵能夠到達的房子有幾個。輸入格式 第一行2個整數n,m n...
洛谷 P1503 鬼子進村 Treap
原題位址 題意就不解釋了吧。看到這道題,一開始yy把所有點加進treap裡面,然後完全跟著操作走,應該是可做的。在treap裡面找連續的一段應該很簡單,只要有一定 能力都行 吧。可不幸的因為本人太弱,不想寫,就不得不yy其它的做法,我們可以發現,被困士兵能通過的房子組成的序列的兩個端點為被毀滅的兩個...
洛谷P1503 鬼子進村 題解
原題 題目描述 縣城裡有 n nn 個用地道相連的房子,第 i ii 個只與第 i 1 i 1i 1 和第 i 1 i 1i 1 個相連。這時有 m mm 個訊息依次傳來 若訊息為 d x 鬼子將 x xx 號房子摧毀了,地道被堵上。若訊息為 q x 有一名士兵被圍堵在 x xx 號房子中。李雲龍收...