1098 樹狀陣列2(破壞公路)

2021-08-08 20:50:50 字數 1476 閱讀 4534

1098: 樹狀陣列2(破壞公路)

時間限制: 1 sec 記憶體限制: 128 mb

提交: 111 解決: 21

[提交][狀態][討論版]

題目描述

題目描述:

在太平洋中心有乙個圓形小島,沿著小島的海岸線分布著n個小鎮,編號分別為1,2,3~~n;小鎮i-1、小鎮i、小鎮i+1是相鄰的(當然小鎮n與小鎮1相鄰)。相鄰小鎮之間存在一條公路,公路也有編號,公路i連線小鎮i和小鎮i+1,公路n連線小鎮n和小鎮1.現在對小島有m個操作,操作有兩種:

詢問操作:1 x y 代表小鎮x到小鎮y是否聯通,聯通輸出1,否則輸出0

修改操作:0 x 代表修改公路x,如果公路原來是完好的,則斷開,否則修好公路x。

輸入格式:

輸入第一行為乙個整數t,代表下來有t組資料

每組資料輸入第一行包含兩個整數n,m,分別表示小鎮個數和操作命令數目。

輸入接下來的m行,每一行代表一條操作指令。

輸出格式:

對於相鄰兩組資料之間要留一空行。

輸入樣例:

1 5 10

1 2 5

0 4

1 4 5

0 2

1 3 4

1 1 3

0 1

0 2

1 2 4

1 2 5

輸出樣例:

1 1

1 0

1 0

資料規模:

對於20%的資料滿足:1 < = n, m <=1000。

對於40%的資料滿足:1 < = n, m <= 100000。

對於100%的資料滿足:1 < = n, m <= 500000。

#include

#include

#include

using

namespace

std;

int n,m;

int control[500005];

int vis[500005];

int lowbit(int x)

void change(int x,int k)

}int getnum(int x)

return ans;

}int main()

if (getnum(y-1)-getnum(x-1)==0)

printf("1\n");

else

if ((getnum(x-1)==0)&&(getnum(n-1)-getnum(y-1)==0)&&vis[n]==0)

printf("1\n");

else

printf("0\n");

}else

else

change(x,temp);}}

printf("\n");

}return

0;}

樹狀陣列2(破壞公路)

題目描述 在太平洋中心有乙個圓形小島,沿著小島的海岸線分布著 n個小鎮,編號分別為 1,2,3 n 小鎮i 1 小鎮i 小鎮i 1 是相鄰的 當然小鎮 n與小鎮 1相鄰 相鄰小鎮之間存在一條公路,公路也有編號,公路 i連線小鎮 i和小鎮 i 1,公路 n連線小鎮 n和小鎮 1.現在對小島有 m個操作...

樹狀陣列2

1157 新年彩燈 time limit 1 sec memory limit 128 mb submit 73 solved 25 submit status web board description 新年將至,yy準備掛一片彩燈,形狀呈矩形,已知彩燈剛掛完的彩燈共有n n盞 第一排編號為 1,...

樹狀陣列2 更高深的樹狀陣列

一 區間修改區間求和 這個東西可就不是把 單點查詢區間修改 和 單點修改區間查詢 合起來那麼簡單了,仔細想想,拿之前的辦法都不咋地好做,那麼怎麼辦呢,我們還是要用到差分陣列,設原陣列為a,差分陣列為b,則b 1 a 1 b i a i a i 1 那麼區間修改我們就解決了,只需要log的時間即可,但...