luogu P3913 车的攻击 |数学

题目描述

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

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

输入格式

第1 行,2 个整数N,K。

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

输出格式

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


#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=2e6+10;
#define int long long
struct node{
	int x,y;
}e[N];
int A[N],B[N];
signed main(){
	int n,k;
	cin>>n>>k;
	for(int i=1;i<=k;i++){
		scanf("%lld%lld",&e[i].x,&e[i].y);
		A[i]=e[i].x;
		B[i]=e[i].y;
	}
	sort(A+1,A+1+k);
	sort(B+1,B+1+k);
	int x=unique(A+1,A+1+k)-A-1;
	int y=unique(B+1,B+1+k)-B-1;	
	cout<<x*n+y*n-x*y;
}
posted @ 2019-11-14 11:51  白木偶君  阅读(104)  评论(0编辑  收藏  举报