x星球居民小區的樓房全是一樣的,並且按矩陣樣式排列。其樓房的編號為1,2,3…
當排滿一行時,從下一行相鄰的樓往反方向排號。
比如:當小區排號寬度為6時,開始情形如下:
1 2 3 4 5 6
12 11 10 9 8 7
13 14 15 …
我們的問題是:已知了兩個樓號m和n,需要求出它們之間的最短移動距離(不能斜線方向移動)
3個整數w m n,空格分開,都在1到10000範圍內
要求輸出乙個整數,表示m n 兩樓間最短移動距離。
6 8 2
4 7 20
4
5
#include
#include
#include
typedef
long
long ll;
intmain()
else
if(srow%2!=
0)else
if(fcol-scol<0)
else
if(frow-srow <0)
else
printf
("%lld\n"
,minus_col+minus_row);}
return0;
}
算第乙個數的行號和列號,行號比較容易解決:n % w == 0? n/w : n/(w-1),
列號的確定依賴於行是奇數還是偶數
偶數行:從左至右公升序 列號 = (寬度-數字%寬度)%寬度
奇數行:從左至右降序 列號 = (數字%寬度-1+寬度)%寬度
同上,算第二個數的行號和列號,
兩個數的|行號之差|+|列號之差|就是答案。
F 樓房的距離
某小區的樓房全是一樣的,並且按矩陣樣式排列。其樓房的編號1,2,3 當排滿一行時,從下一行相鄰的樓往反方向排號。比如 當小區排號寬度為 6 時,開始情形如下 1 2 3 4 5 6 12 11 10 9 8 7 13 14 15 現在已知小區的寬度 w。問你兩個樓號 n 和 m 對應的樓房之間的最短...
D 樓房重建
時間限制 ms 空間限制 kb 評測說明 1s,256m 問題描述 小a的樓房外有一大片施工工地,工地上有n棟待建的樓房。每天,這片工地上的房子拆了又建 建了又拆。他經常無聊地看著窗外發呆,數自己能夠看到多少棟房子。為了簡化問題,我們考慮這些事件發生在乙個二維平面上。小a在平面上 0,0 點的位置,...
樓房重建 (線段樹)
2957 樓房重建 time limit 10 sec memory limit 256 mb submit 2289 solved 1081 submit status discuss description 小a的樓房外有一大片施工工地,工地上有n棟待建的樓房。每天,這片工地上的房子拆了又建 建...