# 2018 CCPC-Final 2018 I. Cockroaches（技巧题）

## 题目链接

#include <iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<map>
#include<queue>
#include<set>
#include<cmath>
#include<stack>
#include<string>

const int mod = 998244353;
const int maxn = 1e5 + 5;
const int inf = 1e9;
const long long onf = 1e18;
#define me(a, b) memset(a,b,sizeof(a))
#define lowbit(x) x&(-x)
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define PI 3.14159265358979323846
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
map<int, int> sx, sy;
int n;

struct node {
int x, y;
} a[maxn];

void work() {
scanf("%d", &n);
sx.clear(), sy.clear();
int Maxx = 0, Maxy = 0;
for (int i = 1; i <= n; i++) {
scanf("%d%d", &a[i].x, &a[i].y);
sx[a[i].x]++;
sy[a[i].y]++;
Maxx = max(Maxx, sx[a[i].x]);
Maxy = max(Maxy, sy[a[i].y]);
}
if (sx.size() == 1 || sy.size() == 1) {
printf("%d 1\n", n);
return;
}
if (Maxx == 1 && Maxy == 1) {
printf("2 %lld\n", (ll) n * (n - 1) / 2);
return;
}
ll fix = 0, sex = 0, fiy = 0, sey = 0;
for (auto it:sx) {
if (it.second == Maxx)///记录最多点行的数目。
fix++;
else if (it.second == Maxx - 1)///记录次多点行的数目。
sex++;
}
for (auto it:sy) {
if (it.second == Maxy)///记录最多点列的数目。
fiy++;
else if (it.second == Maxy - 1)///记录次多点列的数目。
sey++;
}
ll ans1 = fix * fiy;///求出能杀Maxx+Maxy的虫组成的方式有多少种
ll ans2 = fix * sey + fiy * sex;///求出能杀Maxx+Maxy-1的虫组成的方式有多少种
for (int i = 1; i <= n; i++) {
int x = a[i].x, y = a[i].y;
if (sx[x] + sy[y] == Maxx + Maxy) {
///因为这里我们枚举的是每只虫，要是满足这个等式，说明这种情况只能杀Maxx+Maxy-1只虫
ans1--, ans2++;
} else if (sx[x] + sy[y] == Maxx + Maxy - 1)///与上面情况同理，满足这个等式只能杀Maxx+Maxy-2只虫
ans2--;
}
if (!ans1)///要是最后ans1减成0了，说明能杀Maxx+Maxy的虫每种方式行和列都重复了一个。
printf("%d %lld\n", Maxx + Maxy - 1, ans2);
else
printf("%d %lld\n", Maxx + Maxy, ans1);
}

int main() {
#ifndef ONLINE_JUDGE
// freopen("1.in", "r", stdin);
#endif
int t = 1, Case = 1;
cin >> t;
while (t--) {
printf("Case %d: ", Case++);
work();
}
return 0;
}


07-14 1101

12-21 704

10-07 386

12-12 213

02-05 240

02-02 586

11-16 76

11-26 34

05-24 562

02-14 62

#### 【题解】CCPC-Final 2019 C - Mr. Panda and Typewriter

©️2020 CSDN 皮肤主题: 创作都市 设计师: CSDN官方博客

1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载，可以购买VIP、C币套餐、付费专栏及课程。