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 }

 

posted @ 2014-10-19 19:27  haohaooo  阅读(124)  评论(0编辑  收藏  举报