雪花雪花雪花

2021-10-08 11:13:39 字數 1526 閱讀 2155

e. 雪花雪花雪花

記憶體限制:256 mib

時間限制:1000 ms

標準輸入輸出

題目型別:傳統

評測方式:文字比較

題目描述

有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.

樣例樣例輸入

21 2 3 4 5 6

4 3 2 1 6 5

樣例輸出

twin snowflakes found.

資料範圍與提示

1≤n≤100000,

0≤ai,j<10000000

#include using namespace std;

long long int n;

long long int a[100005][10];

vectorhash[99991];//為了方便統計陣列是否為空,用乙個vector ,並且,因為vector是從0號位開始存起的,所以,後面的儲存方式也要從0開始

bool flag=1;

long long hashz(long long x)

return (sum+mul)%99991;

}bool check(long long x,long long y)//0是可行,1是不可行

}if(flag1)//成立,反回0,只需要有乙個滿足就行

flag1=1;

for(int k=0;k<6;k++)//逆時針

}if(flag1)

}} return 1;

}int main()

int sum=hashz(i);//統計雜湊值

if(flag)//只要有乙個滿足,便可以輸出可行 }}

hash[sum].push_back(i);

} }if(!flag)

else

}

137 雪花雪花雪花 hash

有n片雪花,每片雪花由六個角組成,每個角都有長度。第i片雪花六個角的長度從某個角開始順時針依次記為ai,1,ai,2,ai,6 因為雪花的形狀是封閉的環形,所以從任何乙個角開始順時針或逆時針往後記錄長度,得到的六元組都代表形狀相同的雪花。例如ai,1,ai,2,ai,6 和ai,2,ai,3,ai,...

AcWing 137 雪花雪花雪花

題目描述 有n片雪花,每片雪花由六個角組成,每個角都有長度。第i片雪花六個角的長度從某個角開始順時針依次記為ai,1,ai,2,ai,6。因為雪花的形狀是封閉的環形,所以從任何乙個角開始順時針或逆時針往後記錄長度,得到的六元組都代表形狀相同的雪花。例如ai,1,ai,2,ai,6和ai,2,ai,3...

Acwing 137 雪花雪花雪花

有n片雪花,每片雪花由六個角組成,每個角都有長度。第i片雪花六個角的長度從某個角開始順時針依次記為ai,1,ai,2,ai,6ai,1,ai,2,ai,6。因為雪花的形狀是封閉的環形,所以從任何乙個角開始順時針或逆時針往後記錄長度,得到的六元組都代表形狀相同的雪花。例如ai,1,ai,2,ai,6a...