洛谷-P3913 车的攻击

洛谷-P3913 车的攻击

原题链接:https://www.luogu.com.cn/problem/P3913


题目描述

N×N 的国际象棋棋盘上有\(K\) 个车,第\(i\)个车位于第\(R_i\)行,第\(C_i\) 列。求至少被一个车攻击的格子数量。

车可以攻击所有同一行或者同一列的地方。

输入格式

第1 行,2 个整数\(N,K\)

接下来K 行,每行2 个整数\(R_i,C_i\)

输出格式

1 个整数,表示被攻击的格子数量。

输入输出样例

输入 #1

3 2
1 2
2 2

输出 #1

7

说明/提示

  • 对于30% 的数据,\(1 \le N \le 10^3; 1 \le K \le 10^3\)
  • 对于60% 的数据,\(1 \le N \le 10^6; 1 \le K \le 10^6\)
  • 对于100% 的数据,\(1 \le N \le 10^9; 1 \le K \le 10^6; 1 \le R_i , C_i \le N\)

C++代码

#include <cstdio>
#include <algorithm>
using namespace std;

int main() {
    long long n, k, rr=1, cc=1;
    scanf("%lld%lld", &n, &k);
    int r[k], c[k];
    for (int i=0; i<k; ++i)
        scanf("%d%d", &r[i], &c[i]);
    sort(r, r+k);
    sort(c, c+k);
    for (int i=1; i<k; ++i) {
        if (r[i] != r[i-1])
            ++rr;
        if (c[i] != c[i-1])
            ++cc;
    }
    printf("%lld\n", n * n - (n - rr) * (n - cc));
    return 0;
}
posted @ 2020-12-29 10:26  yuzec  阅读(113)  评论(0编辑  收藏  举报