EOJ 3059極座標排序 個人錯誤分析

2022-09-23 13:21:10 字數 2337 閱讀 3632

題面統計資料

7 個討論

單點時限: 2.0 sec

記憶體限制: 256 mb

在平面上,確定乙個點的位置通常有下面兩種表示方法:

當極座標系中的極點 o 與直角座標系中的原點 o 重合,極軸 ox 與直角座標系中的 x 軸的正半軸重合,並且兩種座標系的單位長度相同,那麼平面內任意一點 p 的直角座標與極座標可以互相轉換。

例如:點 p 直角座標為:,(1,1),則對應的極座標為:(1.4142,π4)。

點 p 直角座標為:,(−1,1),則對應的極座標為:(1.4142,3π4)。

點 p 直角座標為:,(−1,−1),則對應的極座標為:(1.4142,5π4)。

點 p 直角座標為:,(1,−1),則對應的極座標為:(1.4142,7π4)。

點 p 直角座標為:,(0,1),則對應的極座標為:(1,π2)。

點 p 直角座標為:,(1,0),則對應的極座標為:(1,0)。

給出 n 個點的直角座標 (x,y),請計算出這些點對應的極座標,將這 n 個點按照極角 θ 從小到大排序,如果兩個點的極角相同,則將它們按照極徑 ρ 由大到小排序。

注意:ρ≥0,極角 0≤θ<2π

第 1 行:整數 t (1≤t≤10) 為問題數。

對於每個問題,按如下格式輸入:

第 1 行:輸入乙個正整數 n(1≤n≤1000),表示點的個數;

接下來 n 行,每行輸入兩個浮點數 x,y,表示點的直角座標,兩個數之間由乙個空格分隔。

對於每個問題,輸出一行問題的編號(0 開始編號,格式:case #0:等)。

接下來 n行輸出排序後的點的極座標(ρ,θ),每行輸出乙個點的極座標,小數點後保留 4 位,極角採用弧度表示。

input

3

51.0 1.0

2.0 2.0

-1.0 1.0

0 1.0

1.0 0

10 -1.0

61.0 1.0

0 1.0

1.0 0

-1.0 1.0

-1.0 -1.0

1.0 -1.0

output

case #0:

(1.0000,0.0000)

(2.8284,0.7854)

(1.4142,0.7854)

(1.0000,1.5708)

(1.4142,2.3562)

case #1:

(1.0000,4.7124)

case #2:

(1.0000,0.0000)

(1.4142,0.7854)

(1.0000,1.5708)

(1.4142,2.3562)

(1.4142,3.9270)

(1.4142,5.4978)

#include #include 

#include

#define pi 3.1415926

using

namespace

std;

struct

point

zuo[

1001

];int cmp(const

void *a, const

void *b)

else

return bb->p - aa->p;

}int

main()

qsort(zuo, n,

sizeof(zuo[0

]), cmp);

cout

<< "

case #

"<< ret++ << ":"

<

for (i = 0; i < n; i++)

}}/*

一些要說的話,寫cmp 拿double比較大小排序時一定要注意:

1.相等用fbs(x-y)<1e-10表示

2. 有int 返回值時,不能直接返回double相減的值,應該比較兩數大小後,用1和-1作為返回值,否則若存在小數,會返回0值令結果錯誤

3.其他,atan2函式表示區間為(-pi,pi)若要用來轉換(0,2pi),可以直接在負結果後+2pi

但是務必注意atan2(double y,double x)第乙個引數為縱座標(被坑慘了,/(ㄒoㄒ)/~~)

*/

EOJ 莫干山奇遇

出題人當然是希望出的題目有關oxx,於是想方設法給題目配上一些有關oxx的背景故事,使得它看起來不那麼無趣。但有的時候卻無法引入合適的小姐姐,使得oxx顯得非常可憐。所以出題人刪除了故事,只留下乙個枯燥乏味的數學問題。故事已刪除 給乙個長度為n的序列a1,a2,an,求乙個長度為m的序列b1,b2,...

EOJ 2794 鍊錶

大概是在10000 10的矩陣裡找兩行,兩列,使得兩行中的對應列是相同的。思路 在長列中hash,建立hash陣列,表示這個hash i 的i前乙個位置,建立鍊錶next i 指向hash value i 這樣就能o n 的找到所有相同的數的乙個鍊錶。然後搜尋兩列的時候比較當前指向的位置,當前比較短...

EOJ 3256 拼音魔法

time limit per test 1.0 seconds time limit all tests 1.0 seconds memory limit 256 megabytes 魔法學校小學一年級有一種題。就是給乙個字的拼音,給乙個聲調,讓你正確地注音。但魔法老師給了巨量的題,你不用魔法根本不...