座標字元NYOJ 298 點的變換 矩陣快速冪

2021-09-06 09:46:22 字數 2040 閱讀 9013

在寫這篇文章之前,***已經寫過了幾篇關於改座標字元主題的文章,想要了解的朋友可以去翻一下之前的文章

時光制約:

2000 ms  |            記憶體制約:

65535 kb

難度:

5

每日一道理

聰明人學習,像搏擊長空的雄鷹,仰視一望無際的大地;愚笨的人學習,漫無目的,猶如亂飛亂撞的無頭飛蛾;刻苦的人學習,像彎彎的河流,雖有曲折,但終會流入大海;懶惰的人學習,像水中的木頭,阻力越大倒退得越快。

描述 平面上有不超越10000個點,座標都是已知的,現在可能對全部的點做以下幾種操縱:

平移必定距離(m),相對x軸上下翻轉(x),相對y軸閣下翻轉(y),座標縮小或放大必定的倍數(s),全部點對座標原點逆時針旋轉必定角度(r)。    

操縱的次數不超越1000000次,求終究全部點的座標。

輸入

只有一組測試資料

測試資料的第一行是兩個整數n,m,分離表示點的個數與操縱的個數(n<=10000,m<=1000000)

隨後的一行有n對數對,每個數對的第乙個數表示乙個點的x座標,第二個數表示y座標,這些點初始座標鉅細絕對值不超越100。

隨後的m行,每行代表一種操縱,行首是乙個字元:

首字元如果是m,則表示平移操縱,該行後面將跟兩個數x,y,表示把全部點按向量(x,y)平移;

首字元如果是x,則表示把全部點相對於x軸進行上下翻轉;

首字元如果是y,則表示把全部點相對於y軸進行閣下翻轉;

首字元如果是s,則隨後將跟乙個數p,表示座標放大p倍;

首字元如果是r,則隨後將跟乙個數a,表示全部點相對座標原點逆時針旋轉必定的角度a(單位是度)

輸出 每行輸出兩個數,表示乙個點的座標(對結果四捨五入到小數點後1位,輸出一位小數字)

點的輸出順序應與輸入順序保持一致

樣例輸入

2 5

1.0 2.0 2.0 3.0xy

m 2.0 3.0

s 2.0

r 180

樣例輸出

-2.0 -2.0

0.0 0.0

解題思路:    每個點的操縱需要m次

如果對每個點都進行模擬,n個點的時光複雜度就是o(nm)

把全部操縱相乘存到矩陣裡,每個點只需要成乘矩陣一次就可失掉m次操縱後的結果

假設起始點的座標為(x,y) 

其實很輕易證明每次操縱要乘與什麼矩陣

x1 x2 x3                x                    x1*x+x2*y+x3

x4 x5 x6       x      y       =         x4*x+x5*y+x6

x7 x8 x9               1                     x7*x+x8*y+x9

如平移向量(a,b),x1=x5=1,x2=x4=0,x3=a,x4=b

值得注意的是矩陣有結合律但是沒有交換率,前面的操縱應當放在乘號的左邊

**:

文章結束給大家分享下程式設計師的一些笑話語錄: 問路

有乙個駕駛熱氣球的人發現他迷路了。他降低了飛行的高度,並認出了地面 上的乙個人。他繼續下降高度並對著那個人大叫,「打擾一下,你能告訴我我 在哪嗎?」

下面那個人說:「是的。你在熱氣球裡啊,盤旋在 30 英呎的空中」。

熱氣球上的人說:「你一定是在 it 部門做技術工作」。

「沒錯」,地面上的人說到,「你是怎麼知道的?」

「呵呵」,熱氣球上的人說,「你告訴我的每件事在技術上都是對的,但對都沒 有用」。

地面上的人說,「你一定是管理層的人」。

「沒錯」,熱氣球上的人說,「可是你是怎麼知道的?」

「呵呵」,地面上的那人說到,「你不知道你在**,你也不知道你要去哪,你 總希望我能幫你。你現在和我們剛見面時還在原來那個地方,但現在卻是我 錯了」。

NYOJ 298 點的變換 矩陣乘法

最好還是自己手推一下矩陣式子.不算太難.但是有一些小知識 首先當然是矩陣的細節.矩陣是不支援交換率的.所以如圖的式子乘進去時要放在左邊.還有的比如說 cmath裡的sin函式用的是弧度制.需要把度數 180 m pi m pi是cmath裡定義的常數 double在取固定小數字的時候小負數四捨五入會...

NYOJ 298 相變點(矩陣高速功率)

時間限制 2000 ms 記憶體限制 65535 kb 難度 5 描寫敘述 平面上有不超過10000個點。座標都是已知的。如今可能對全部的點做下面幾種操作 平移一定距離 m 相對x軸上下翻轉 x 相對y軸左右翻轉 y 座標縮小或放大一定的倍數 s 全部點對座標原點逆時針旋轉一定角度 r 操作的次數不...

點的變換(矩陣轉化)

link 時間限制 2000 ms 記憶體限制 65535 kb 難度 5 描述 平面上有不超過10000個點,座標都是已知的,現在可能對所有的點做以下幾種操作 平移一定距離 m 相對x軸上下翻轉 x 相對y軸左右翻轉 y 座標縮小或放大一定的倍數 s 所有點對座標原點逆時針旋轉一定角度 r 操作的...