P3913 车的攻击 题解
因为这道题确实让我学到了一些东西,所以来记录一下
STL中有一个尊贵的宝物,叫做unique,unique的使用要建立已经sort好的前提下,所以我们的思路是对
r 和 c 分别 sort,再用unique去重。
关于unique的原理:unique并未创造一个新的数组,而是将重复部分移至后端,所以要用指针特性减去。
代码:
点击查看代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,k;
ll r[1000005],c[1000005];
int main()
{
scanf("%lld%lld",&n,&k);
for(ll i=1;i<=k;i++)
{
cin>>r[i]>>c[i];
}
sort(r+1,r+k+1);
sort(c+1,c+k+1);
ll sizer=unique(r+1,r+k+1)-(r+1);
ll sizec=unique(c+1,c+k+1)-(c+1);
cout<<n*n-(n-sizer)*(n-sizec)<<endl;
return 0;
}