Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
stl水过~直接暴力找12次是超时的..所有相同的雪花都对应同一个排序后的数组 读数据后先排序 再查找插入 就好 似乎要重载运算符才能结构体查找 #include<cstdio> #include<cstring> #include<queue> #include <algorithm> #include<set> using namespace std; struct vii { int a, b, c, d, e, f; vii(int _a = 0, int _b = 0, int _c = 0, int _d = 0, int _e = 0, int _f = 0) :a(_a), b(_b), c(_c), d(_d), e(_e), f(_f) {} bool operator <(const vii &r)const { if (a == r.a&&b == r.b&&c == r.c&&d == r.d&&e == r.e) return f < r.f; if (a == r.a&&b == r.b&&c == r.c&&d == r.d) return e < r.e; if (a == r.a&&b == r.b&&c == r.c) return d < r.d; if (a == r.a&&b == r.b) return c < r.c; if (a == r.a) return b < r.b; return a < r.a; } }; set<vii>viia; int main() { int n, i, mp[6]; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d%d%d%d%d%d", mp, mp + 1, mp + 2, mp + 3, mp + 4, mp + 5); sort(mp, mp + 6); if (viia.find(vii(mp[0], mp[1], mp[2], mp[3], mp[4], mp[5])) != viia.end()) break; viia.insert(vii(mp[0], mp[1], mp[2], mp[3], mp[4], mp[5])); } puts(i == n ? "No two snowflakes are alike." : "Twin snowflakes found."); } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator