Educational Codeforces Round 115 (Rated for Div. 2) D. Training Session(容斥,思维)

Posted issue是fw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Educational Codeforces Round 115 (Rated for Div. 2) D. Training Session(容斥,思维)相关的知识,希望对你有一定的参考价值。

LINK

n n n个元素每个拥有 a i , b i a_i,b_i ai,bi两个属性,没有两个元素的两个属性都相同.

问选出三个元素使得他们的 a a a属性各不相同或 b b b属性各不相同的方案数。

a i , b i < = n < = 2 ∗ 1 0 5 a_i,b_i<=n<=2*10^5 ai,bi<=n<=2105


首先总方案数有 ( n 3 ) = n ∗ ( n − 1 ) ∗ ( n − 2 ) 6 \\binom{n}{3}=\\frac{n*(n-1)*(n-2)}{6} (3n)=6n(n1)(n2)

考虑减去不合法的方案数,也就是两种属性都有相同的方案

设选出来的三人是 R , S , T R,S,T R,S,T,由于没有两个人的属性值完全相同

那么此时无非三种情况 (令 n u m a [ i ] numa[i] numa[i]表示 a a a属性值为 i i i的人数, n u m b [ i ] numb[i] numb[i]同理)

Ⅰ. R R R a a a属性和 S S S a a a相同,且 b b b属性和 T T T b b b相同

(当然你也可以说 R a = S a & & S b = T b R_a=S_a\\&\\&S_b=T_b Ra=Sa&&Sb=Tb,不过这样角色 S S S相当于此时的角色 R R R,是等价的方案,我们只计算一种即可)

此时枚举 R R R a a a属性值为 a 1 a_1 a1, b b b属性为 b 1 b_1 b1

那么 S S S的选择有 n u m a [ a 1 ] − 1 numa[a_1]-1 numa[a1]1种, T T T的选择有 n u m b [ b 1 ] − 1 numb[b_1]-1 numb[b1]1

而且因为没有两个人属性完全相同,可得 R ! = S & & R ! = T & & S ! = T R!=S\\&\\&R!=T\\&\\&S!=T R!=S&&R!=T&&S!=T

显然方案数为 ( n u m a [ a 1 ] − 1 ) ∗ ( n u m b [ b 1 ] − 1 ) (numa[a_1]-1)*(numb[b_1]-1) (numa[a1]1)(numb[b1]1)

其余情况均不满足

和上面同理

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 1e6+10;
int n,a[maxn],b[maxn];
vector<int>va[maxn],vb[maxn];
signed main()
{
	ios::sync_with_stdio( false ); cin.tie( 0 ); cout.tie( 0 );
	int t; cin >> t;
	while( t-- )
	{
		cin >> n;
		int ans = (n-2)*(n-1)*n/6;
		for(int i=1;i<=n;i++)
		{
			cin >> a[i] >> b[i];
			va[a[i]].push_back( b[i] );
			vb[b[i]].push_back( a[i] );
		}
		for(int i=1;i<=n;i++)	sort( va[i].begin(),va[i].end() );
		for(int i=1;i<=n;i++)	sort( vb[i].begin(),vb[i].end() );		
		for(int i=1;i<=n;i++)	ans -= 1ll*( 1ll*va[a[i]].size()-1 )*( vb[b[i]].size()-1 );
		cout << ans << endl;
		for(int i=1;i<=n;i++)	va[i].clear(), vb[i].clear();
	}
	return 0;
}

以上是关于Educational Codeforces Round 115 (Rated for Div. 2) D. Training Session(容斥,思维)的主要内容,如果未能解决你的问题,请参考以下文章

Educational Codeforces Round 7 A

Educational Codeforces Round 7

Educational Codeforces Round 90

Educational Codeforces Round 33

Codeforces Educational Codeforces Round 54 题解

Educational Codeforces Round 27