为了去掉重复的点,我一开始犯懒就拿了个 map
,一直 WA #3,#8
,评测记录。
struct Point {
int a, b, c, d, op;
Point() {}
Point(int _a, int _b, int _c, int _d): a(_a), b(_b), c(_c), d(_d) {}
friend bool operator <(const Point &x, const Point &y) {
if (x.a ^ y.a) return x.a < y.a;
if (x.b ^ y.b) return x.b < y.b;
if (x.c ^ y.c) return x.c < y.c;
return x.d < y.d;
}
};
还是我下面用的时候写挂了啊?
for (int i = 1; i <= n; ++i) {
Point x;
cin >> x.a >> x.b >> x.c >> x.d;
if (!mp.count(x)) {
a[++tn] = x;
mp[x] = tn;
cnt[tn] = 1;
}
else ++cnt[mp[x]];
}
这么写有什么问题啊?