描述 縣城裡有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
若士兵被圍堵在摧毀了的房子中,那只能等死了。。。。。。
乙個平衡樹,內部儲存被破壞的房子,支援新增刪除,查詢前驅後繼即可;
乙個布林陣列,儲存每個房子的毀壞情況;
乙個棧,記錄毀壞房子的順序;
ans如果房子毀壞為0,否則為後繼-前驅-1;
1 #include2const
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其它的做法,我們可以發現,被困士兵能通過的房子組成的序列的兩個端點為被毀滅的兩個...