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(容斥,思维)相关的知识,希望对你有一定的参考价值。
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<=2∗105
首先总方案数有 ( n 3 ) = n ∗ ( n − 1 ) ∗ ( n − 2 ) 6 \\binom{n}{3}=\\frac{n*(n-1)*(n-2)}{6} (3n)=6n∗(n−1)∗(n−2)
考虑减去不合法的方案数,也就是两种属性都有相同的方案
设选出来的三人是 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