魔法少女小Scarlet

2022-10-07 21:30:11 字數 1199 閱讀 1634

scarlet最近學會了乙個陣列魔法,她會在n∗n二維陣列上將乙個奇數階方陣按照順時針或者逆時針旋轉90°,

首先,scarlet會把1到n2

的正整數按照從左往右,從上至下的順序填入初始的二維陣列中,然後她會施放一些簡易的魔法。

scarlet既不會什麼分塊特技,也不會什麼splay套splay,她現在提供給你她的魔法執行順序,想讓你來告訴她魔法按次執行完畢後的二維陣列。

第一行兩個整數n,m,表示方陣大小和魔法施放次數。1<=n,m<=500

接下來m行,每行4個整數x,y,r,z。x,y,r,z表示在這次魔法中,scarlet會把以第x行第y列為中心的2r+1階矩陣按照某種時針方向旋轉,其中z=0表示順時針,z=1表示逆時針。

最終所得的矩陣

模擬:

思路:

開乙個臨時陣列,儲存每次變化的資料,變化完之後再賦給原陣列

順時針旋**

第i行第j個變成倒數第i列第j個:f[x - y + j][x + y - i] = g[i][j];

x-y+j=(x-r)+[j-(b-r)],要進行旋轉的第一行是原陣列的第x-r行;第j個:進行旋轉的第一列是b-r,第j個就表示為j-(b-r)(式子中的j是當前列不是前面的j,可以結合下面的**看一下

那麼還原到原陣列上就是(x-r)+[j-(b-r)]

x+y-i=(b+r)-[i-(a-r)]

逆時針旋**

第i行第j個變成第i列倒數第j個:

f[x + y - j][y - x + i] = g[i][j];

x+y-j=(x+r)-[j-(y-r)]      y-x+i=(y-r)+[i-(x-r)]

**:

#includeusing

namespace

std;

intn, m;

intx, y, r, z;

int g[510][510], f[510][510

], num;

intmain()

else

}for (int i = 1; i <= n; i++)

}

魔法少女小Scarlet 19物聯網張春

題目描述 scarlet最近學會了乙個陣列魔法,她會在n n二維陣列上將乙個奇數階方陣按照順時針或者逆時針旋轉90 首先,scarlet會把1到 n 2 的正整數按照從左往右,從上至下的順序填入初始的二維陣列中,然後她會施放一些簡易的魔法。scarlet既不會什麼分塊特技,也不會什麼splay套sp...

魔法少女小瑩瑩 SDUT

problem description 小瑩瑩被困在了乙個由 n 個石柱圍成一圈組成的迷宮裡,也就是 1,2,3,n,1,2,3,這樣一直迴圈。她起始位置是 1,每次只能沿著順時針方向選擇飛躍 a 或者 b 距離的魔法,也就是從當前石柱 i 飛往 i a 石柱或者 i b 石柱。第 m 個石柱有傳送...

魔法少女(動態規劃)

討論區 魔法少女 時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述前些時間虛淵玄的鉅獻小圓著實火了一把。在黑長直 小炎 往上爬樓去對抗魔女之夜時,她遇到了乙個問題想請你幫忙。因為魔女之夜是懸浮在半空的,所以她必須要爬樓,而那座廢墟一共有n層,而且每層高度不同,這造成小炎爬每層的...