首页 > 代码库 > soj杂题

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 }

 

soj杂题