洛谷1053 鬼子進村

2022-05-01 05:30:11 字數 1282 閱讀 1029

描述 縣城裡有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 9

d 3d 6

d 5q 4

q 5r

q 4r

q 4

輸出樣例#1:

102

4

若士兵被圍堵在摧毀了的房子中,那只能等死了。。。。。。

乙個平衡樹,內部儲存被破壞的房子,支援新增刪除,查詢前驅後繼即可;

乙個布林陣列,儲存每個房子的毀壞情況;

乙個棧,記錄毀壞房子的順序;

ans如果房子毀壞為0,否則為後繼-前驅-1;

1 #include2

const

int maxn=5e4+10;3

intrt,ts;

4int

t[maxn];

5int f[maxn],s[maxn][2];6

void rot(int

x)13

void splay(int

x)22}23

}24void ins(int k,int

x)31

void del(int k,int

x)38

int in_x(int k,int x,int

now)

43int ax_x(int k,int x,int

now)

48int

n,m,x;

49int

q[maxn],top;

50bool

v[maxn];

51char ch[3

];52

intmain()

62if(ch[0]=='r'

)66if(ch[0]=='q'

)71}72

return0;

73 }

//自己yy的想法t了,就懶得寫,直接粘了板子quq

洛谷 1503 鬼子進村 題解

部落格觀賞效果更佳 給定乙個長度為n 5 e4 n 5e4 n 5 e4 的01 0101 序列,一開始都是1 11。支援三種操作 修改某乙個位置為0 00撤銷上一次修改 詢問包含某個位置的最長的連續的1 11的個數。m ul tise tmultiset multis et維護位置,二分得到左右,...

洛谷 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其它的做法,我們可以發現,被困士兵能通過的房子組成的序列的兩個端點為被毀滅的兩個...