0321补题
C - Watchmen
无比暴力的暴力
1 #include <iostream> 2 #include<algorithm> 3 using namespace std; 4 long long n,p[200005],q[200005],s[200005]; 5 struct node{ 6 long long a,b; 7 }m[200005]; 8 bool cmp1(node x,node y) 9 { 10 return x.a<y.a||x.a==y.a&&x.b<y.b; 11 } 12 bool cmp2(node x,node y) 13 { 14 return x.b<y.b; 15 } 16 int main() 17 { 18 19 cin>>n; 20 for(int i=0;i<n;i++) 21 { 22 cin>>m[i].a>>m[i].b; 23 } 24 sort(m,m+n,cmp1); 25 int j=0,k=0,l=0; 26 for(int i=1;i<n;i++) 27 { 28 if(m[i].a==m[i-1].a&&m[i].b==m[i-1].b) s[l]++; 29 else l++; 30 if(m[i].a==m[i-1].a) 31 { 32 p[j]++; 33 } 34 else j++; 35 } 36 sort(m,m+n,cmp2); 37 for(int i=1;i<n;i++) 38 { 39 if(m[i].b==m[i-1].b) q[k]++; 40 else k++; 41 } 42 long long w=0; 43 if(j<k) j=k; 44 if(j<l) j=l; 45 for(int i=0;i<=j;i++) 46 { 47 w+=(p[i]*(p[i]+1))/2; 48 w+=(q[i]*(q[i]+1))/2; 49 w-=(s[i]*(s[i]+1))/2; 50 } 51 cout<<w; 52 53 }
map
1 #include<iostream> 2 #include <map> 3 using namespace std; 4 map<long long, long long>mx; 5 map<long long, long long>my; 6 map<pair<long long, long long>, long long>mxy; 7 int main() 8 { 9 long long n, a, b; 10 long long ans = 0; 11 cin >> n; 12 for (int i = 0; i < n; i++) 13 { 14 cin >> a >> b; 15 mx[a]++; 16 my[b]++; 17 mxy[make_pair(a, b)]++; 18 } 19 for(auto i:mx) 20 ans+=i.second*(i.second-1)/2; 21 for(auto i:my) 22 ans+=i.second*(i.second-1)/2; 23 for(auto i:mxy) 24 ans-=i.second*(i.second-1)/2; 25 26 cout<<ans; 27 28 29 30 }