巨大的棋盤

2021-08-27 16:23:00 字數 1202 閱讀 1430

小a站在乙個巨大的棋盤上。這個棋盤可以看成是乙個網格圖。這個網格圖的大小為n*m。左上角座標為(1,1),右下角座標為(n,m)。這個棋盤很特別,他每行每列都是乙個環。具體來說,當小a站在第一行,他往上走的時候,他會走到第n行,站在第n行往下走會走到第一行。對於第一列和第m列類似。小a在棋盤上可以上下左右走,假設他站在位置(i,j),向上走,會走到(i-1,j),向下回到(i+1,j),向左到(i,j-1),向右到(i,j+1)。注意由於棋盤是迴圈的,他不會走出這個棋盤。 現在小a有乙個固定的行走序列s,代表他每一步走的方向,u代表向上,d代表向下,l代表向左,r代表向右。比如小a一開始在(1,1),棋盤大小為3*4。行走序列為uulrd。那麼他會依次經過(3,1),(2,1),(2,4),(2,1),(3,1)。但小a覺得只走一遍s太無聊,因此他會重複走這個序列t次。比如上面的例子,當t=2時,真正的行走序列為uulrduulrd。 小a有q個備選的起點位置。他一開始先給定你棋盤大小與行走序列,對於每個起點位置,他想知道,他沿著序列走,最終會走到哪個位置停下。

第一行三個整數n,m,t。接下來一行乙個字串s,代表行走序列。注意行走序列在真實走的時候要重複t次。接下來乙個整數q。接下來q行,每行兩個整數x,y,代表小a的乙個備選起點。

輸出q行,每行兩個整數,輸出對於這個起點,最後的終點是**。

3 6 4

duuudllllr

3 3 2

2 5

1 42 2

1 5

3 420%: |s| * t <= 10^6, q = 1

40%: |s| * t <= 10^6, q <= 10^5

60%: |s|, t <= 10^5, q <= 10^5

100%: 1 <= t,n,m <= 10^9, 1 <= x <= n, 1 <= y <= m. 1<= q, |s| <= 10^5其中|s|代表s的長度。

#include

using

namespace

std;

int n,m,t,q;

string s;

long

long xx,yy;

int main()

xx*=t;

xx%=n;

yy*=t;

yy%=m;

for(int i=1;i<=q;i++)

lua table 之開銷巨大

如下程式,當函式每次呼叫都建立乙個 stjding 空表時,執行時間巨長,再cocos quick中測試 如使用外面的全域性變數則非常快,這說明lua在建立table時的開銷時非常大的 local stjding function testtable t local stjding local tl...

Innodb Undo 表空間巨大

我用的5.7的mysql undo清理引數已經開啟了。為什麼undo tablespace沒有清理。這種問題應該是有大查詢的存在,朋友乾掉了大查詢後,undo 依然沒有清理。transactions trx id counter 33083158036 purge done for trx s n ...

struct的巨大作用

面對乙個人的大型c c 程式時,只看其對struct的使用情況我們就可以對其編寫者的程式設計經驗進行評估。因為乙個大型的c c 程式,勢必要涉及一些 甚至大量 進行資料組合的結構體,這些結構體可以將原本意義屬於乙個整體的資料組合在一起。從某種程度上來說,會不會用struct,怎樣用struct是區別...