Luogu P2239 螺旋矩陣

2021-08-17 23:15:28 字數 593 閱讀 8520

乙個n行n列的螺旋矩陣可由如下方法生成:

從矩陣的左上角(第1行第1列)出發,初始時向右移動;如果前方是未曾經過的格仔,則繼續前進,否則右轉;重複上述操作直至經過矩陣中所有格仔。根據經過順序,在格仔中依次填入1, 2, 3, … , n,便構成了乙個螺旋矩陣。

現給出矩陣大小n以及i和j,請你求出該矩陣中第i行第j列的數是多少。

對於50%的資料,1 ≤ n ≤ 100;

對於100%的資料,1 ≤ n ≤ 30,000,1 ≤ i ≤ n,1 ≤ j ≤ n。

首先顯然任意乙個矩陣都是乙個正方形,

所以我們可以根據座標直接求出它的周邊一圈的點的數

所以我們可以像剝殼一樣的,一層一層的遞迴剝下去

每剝掉一層,ans+4*(邊長-1)

然後不能剝的時候,就直接求解

對於四周的點知道邊長怎麼求數,自己推導一下就知道了

#include

using

namespace

std;

int work(int dep,int xx, int yy)

int main()

洛谷 2239 螺旋矩陣

翻了翻題解,發現我的這個方法好像並沒有被寫過,也許是這個方法太菜了,但是還是可以ac的。首先呢 1 n 30,000.暴力就別想了,最多50分 於是就開始在暴力的基礎上找方法,無意發現,如果我們開始先將矩陣一層一層的剝開,直到目標位置在新矩陣的最外層是停止。此時最壞情況,目標點在30000x3000...

洛谷P2239 螺旋矩陣

題目鏈結 直接看題 一看就很數學 我們不妨來畫圖 畫出幾個矩陣,找他們的關係 然後發現 當i 1時,對應的值就是j所對應的值 當i n時,所對應的值就是3 n 2 j 1 當j 1時,所對應的值是4 n 2 i 當j n時,對應的值是n x 1。然後對於這個很多很多層的矩陣,我們可以對其進行剝層,每...

洛谷 P2239 螺旋矩陣 數學

乙個nn行nn列的螺旋矩陣可由如下方法生成 從矩陣的左上角 第11行第11列 出發,初始時向右移動 如果前方是未曾經過的格仔,則繼續前進,否則右轉 重複上述操作直至經過矩陣中所有格仔。根據經過順序,在格仔中依次填入1,2,3,n1,2,3,n,便構成了乙個螺旋矩陣。2 下圖是乙個n 4n 4 時的螺...