遞推與遞迴 分形之城

2021-10-03 13:16:58 字數 1268 閱讀 5000

城市的規劃在城市建設中是個大問題。

不幸的是,很多城市在開始建設的時候並沒有很好的規劃,城市規模擴大之後規劃不合理的問題就開始顯現。

而這座名為 fractal 的城市設想了這樣的乙個規劃方案,如下圖所示:

當城區規模擴大之後,fractal 的解決方案是把和原來城區結構一樣的區域按照圖中的方式建設在城市周圍,提公升城市的等級。

對於任意等級的城市,我們把正方形街區從左上角開始按照道路標號。

雖然這個方案很爛,fractal 規劃部門的人員還是想知道,如果城市發展到了等級 n,編號為 a 和 b 的兩個街區的直線距離是多少。

街區的距離指的是街區的中心點之間的距離,每個街區都是邊長為 10 公尺的正方形。

輸入格式

第一行輸入正整數nn,表示測試資料的數目。

以下nn行,輸入n組測試資料,每組一行。

每組資料報括三個整數 n,a,bn,a,b, 表示城市等級以及兩個街區的編號,整數之間用空格隔開。

輸出格式

一共輸出nn行資料,每行對應一組測試資料的輸出結果,結果四捨五入到整數。

資料範圍

1≤n≤311≤n≤31,

1≤a,b≤22n1≤a,b≤22n,

1≤n≤10001≤n≤1000

輸入樣例:

31 1 2

2 16 1

3 4 33

輸出樣例:

1030

50

#include

#include

#include

using

namespace std;

typedef

long

long ll;

struct point

;point get (ll n, ll a)

; ll block =

1ll<< n *2-

2, len =

1ll<< n -1;

auto p = get (n -

1, a % block)

; ll x = p.x, y = p.y;

int z = a / block;

if(z ==0)

return

;else

if(z ==1)

return

;else

if(z ==2)

return

;else

return;}

intmain()

return0;

}

ACwing 98 分形之城 分形

題面來自acwing 城市的規劃在城市建設中是個大問題。不幸的是,很多城市在開始建設的時候並沒有很好的規劃,城市規模擴大之後規劃不合理的問題就開始顯現。而這座名為 fractal 的城市設想了這樣的乙個規劃方案,如下圖所示 當城區規模擴大之後,fractal 的解決方案是把和原來城區結構一樣的區域按...

AcWing 98 分形之城

原題鏈結 考察 分治 令人嘔吐的分治 思路 直觀思路是找到a,b的直角座標,然後求距離和.這裡的分治是遞迴到最底層,然後根據等級i到等級i 1的座標變化,算出直角座標.可以發現將圖分為4個模組時,每個等級的變換規則相同.include include include using namespace ...

演算法競賽高階指南 分形之城

題目鏈結 把左上角的座標看做 0 0 右上角的座標為 0,2 n 1 左下角的座標為 2 n 1,0 右下角座標為 2 n 1,2 n 1 街區的標號也從 0 開始。現在對於給定的兩個距離,我們要分別求出他們的座標。現在給出等級為 2 距離為 10 如何求座標呢?等級為 1 的城市中有 4 座街區,...