HDU 1030 Delta wave 數學題解

2021-09-06 17:48:41 字數 1062 閱讀 6878

給出乙個數字塔,然後求沿著數字之間的邊走,給出兩個數字,問其路徑最短的長度是多少。

看似一條搜尋題目,只是有一定做題經驗的人都知道,這個不是搜尋題,直接搜尋肯定超時。

這個是依據規律計算的數學題目。

我這裡的思路是一層一層往下搜,利用層間的規律加速,實現層躍,到了同一層,或者同乙個對角列的時候就能夠直接計算出結果了。對角列即順著三角形的邊能直接走到目標的列。

數學計算出層與層之間相差2,而也能夠利用這個規律計算n和m所在的層和列。

這樣做由點麻煩,只是我自己琢磨出來的,不錯的思路。o(∩_∩)o哈哈~

查了下別人的題解,這個部落格利用定座標的方法: 非常巧妙。

他的抽象程度更高,也就更加難自己總結出來了,只是**就更加簡單了。

#include #include #include #include #include #include #include #include #include #include #include using namespace std;

int main()

long long d = 1;

int j = 1;

while (d < m)

//先走行,然後走高回合

int linen = int((long long)n - (t-(long long)i));//所在行第幾個

int linem = int((long long )m - (d-(long long)j));//每層分上下層

int step = 0;

while (linen != linem && i-linen != j - linem && i != j)

else//偶數時,移動乙個位

}int hi = (i+1)>>1;

int hj = (j+1)>>1;//所在層高

if (i == j) step += abs(linem - linen);

else step += ((hj - hi)<<1);

printf("%d\n", step);

} return 0;

}

hdu1271 整數對 數學題

很有技巧的一道數學題。本題思路 假設要求的數字為a,去除的為第k位,那麼按照這個規則,將a劃分為三段 高位c,k位b,低位a,則x a 10 k 1 b 10 k c去除後為b a 10 k c,那麼n a b 11a b 10 k 2c 但是由於2c有可能帶來進製,可能會使b進1,但是不會對a出現...

小學數學題

小學數學題1 usetyp 1 目標 擷取字串usetyp 注意,usetyp的長度是可變的 問題 求以上字串usetyp的長度 注意usetyp的長度是不固定 設usetyp的長度 p 已知1 號的索引位置x indexof 已知理論2 字串長度 最大索引 1 所以,p x 1 3 p x 2 所...

數學題亂記

在 delta abc 中,滿足 cos 2 cfrac 判斷三角形形狀。其中 begin cos 2 cfrac cfrac cfrac sin 1 cos cfrac sin 1 cos cfrac 1 cos cfrac cos cfrac end 根據餘弦定理有 cos cfrac 所以可得...