題目描述
在太平洋中心有乙個圓形小島,沿著小島的海岸線分布著
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#includeusing namespace std;
int n,m,c[500005];
bool vis[500005];
inline int lowbit(int x)//標配
inline void add(int x,int y)//標配
}inline int sum(int x)//標配
return s;
}int main()
if (sum(y-1)-sum(x-1)==0)
printf("1\n"); else
if ((sum(x-1)==0)&&(sum(n-1)-sum(y-1)==0)&&(vis[n]==0))
printf("1\n"); else
printf("0\n");
}else
else
add(x,ss);//改變}}
printf("\n");//兩個資料間要有空行
}return 0;
}
1098 樹狀陣列2(破壞公路)
1098 樹狀陣列2 破壞公路 時間限制 1 sec 記憶體限制 128 mb 提交 111 解決 21 提交 狀態 討論版 題目描述 題目描述 在太平洋中心有乙個圓形小島,沿著小島的海岸線分布著n個小鎮,編號分別為1,2,3 n 小鎮i 1 小鎮i 小鎮i 1是相鄰的 當然小鎮n與小鎮1相鄰 相鄰...
樹狀陣列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的時間即可,但...