soj杂题
unique()函数是一个去重函数,STL中unique的函数 unique的功能是去除相邻的重复元素(只保留一个),还有一个容易忽视的特性是它并不真正把重复的元素删除。他是c++中的函数,所以头文件要加#include<iostream.h>,具体用法如下:
int num[100];
unique(num,mun+n)返回的是num去重后的尾地址,之所以说比不真正把重复的元素删除,其实是,该函数把重复的元素一到后面去了,然后依然保存到了原数组中,然后返回去重后最后一个元素的地址,因为unique去除的是相邻的重复元素,所以一般用之前都会要排一下序。
1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 #include<cstring> 5 #include<vector> 6 #include<algorithm> 7 #define INF 0x3f3f3f3f 8 #define M(a,b) memset(a,b,sizeof(a)) 9 typedef long long LL; 10 using namespace std; 11 12 int N; 13 int K; 14 int row[1000060],col[1000060]; 15 16 int main() 17 { 18 while(scanf("%d%d",&N,&K)==2) 19 { 20 for(int i = 0;i<K;i++) 21 { 22 int a,b; 23 scanf("%d%d",&a,&b); 24 row[i] = a; 25 col[i] = b; 26 } 27 sort(row,row+K); 28 sort(col,col+K); 29 long long s1 = unique(row,row+K)-row; 30 long long s2 = unique(col,col+K)-col; 31 long long ans = (LL)N*N - (N-s1)*(N-s2); 32 printf("%lld\n",ans); 33 } 34 return 0; 35 }