有n片雪花,每片雪花由六個角組成,每個角都有長度。
第i片雪花六個角的長度從某個角開始順時針依次記為ai,1,ai,2,…,ai,6。
因為雪花的形狀是封閉的環形,所以從任何乙個角開始順時針或逆時針往後記錄長度,得到的六元組都代表形狀相同的雪花。
例如ai,1,ai,2,…,ai,6和ai,2,ai,3,…,ai,6,ai,1就是形狀相同的雪花。
ai,1,ai,2,…,ai,6和ai,6,ai,5,…,ai,1也是形狀相同的雪花。
我們稱兩片雪花形狀相同,當且僅當它們各自從某一角開始順時針或逆時針記錄長度,能得到兩個相同的六元組。
求這n片雪花中是否存在兩片形狀相同的雪花。
輸入格式
第一行輸入乙個整數n,代表雪花的數量。
接下來n行,每行描述一片雪花。
每行包含6個整數,分別代表雪花的六個角的長度(這六個數即為從雪花的隨機乙個角順時針或逆時針記錄長度得到)。
同行數值之間,用空格隔開。
輸出格式
如果不存在兩片形狀相同的雪花,則輸出:
no two snowflakes are alike.
如果存在兩片形狀相同的雪花,則輸出:
twin snowflakes found.
資料範圍
1≤n≤100000,
0≤ai,j<10000000
輸入樣例:
21 2 3 4 5 6
4 3 2 1 6 5
輸出樣例:
;//得到最小位置的指標
for(i=
0;i<
6;i++
) b[i]
=a[i+k]
;//得到最小字典序的排列
}bool cmp2
(int a,
int b)
bool cmp
(int a,
int b)
intmain()
get_min
(snow)
;get_min
(isnow)
;//get_min函式用於將傳入的陣列轉換成字典序最小的陣列if(
cmp2
(snow,isnow)
)//cmp2判斷snow的字典序時候比isnow的小
memcpy
(snows[i]
,snow,
sizeof snow)
;else
memcpy
(snows[i]
,isnow,
sizeof isnow)
;
idx[i]
=i;//idx陣列儲存的是雪花的位置
}sort
(idx,idx+n,cmp)
;//將idx陣列按照雪花的字典序進行公升序排序
for(
int i=
1;iputs
("no two snowflakes are alike.");
return0;
}
雪花雪花雪花
e.雪花雪花雪花 記憶體限制 256 mib 時間限制 1000 ms 標準輸入輸出 題目型別 傳統 評測方式 文字比較 題目描述 有n片雪花,每片雪花由六個角組成,每個角都有長度。第i片雪花六個角的長度從某個角開始順時針依次記為ai,1,ai,2,ai,6。因為雪花的形狀是封閉的環形,所以從任何乙...
演算法高階指南 Acwing 137 雪花雪花雪花
有n片雪花,每片雪花由六個角組成,每個角都有長度。第i片雪花六個角的長度從某個角開始順時針依次記為ai,1,ai,2,ai,6。因為雪花的形狀是封閉的環形,所以從任何乙個角開始順時針或逆時針往後記錄長度,得到的六元組都代表形狀相同的雪花。例如ai,1,ai,2,ai,6和ai,2,ai,3,ai,6...
137 雪花雪花雪花 hash
有n片雪花,每片雪花由六個角組成,每個角都有長度。第i片雪花六個角的長度從某個角開始順時針依次記為ai,1,ai,2,ai,6 因為雪花的形狀是封閉的環形,所以從任何乙個角開始順時針或逆時針往後記錄長度,得到的六元組都代表形狀相同的雪花。例如ai,1,ai,2,ai,6 和ai,2,ai,3,ai,...