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