学习容斥原理 – _LinesYao

容斥原理是结成算学办法,可以解集、复合事情的概率。

原理提出异议:

几组一致集的巨大计算,率先计算迷住细目集的巨大。,从切牌中减去迷住两个集中,相加三组切牌一部分,从四组切牌一部分中减去,等等,常常计算迷住集切中要害一部分切牌 。

维都表:

概率论:

事情AI(I=1),…,n),P(Ai)发作应和事情的概率。至多每一事情的概率:

容斥原理的证明是:

B是Ai的每一珍藏。

假定任性每一元素在k ai集中中(k>=1),证明是该元素只添加一次。:

size(C)=1,为了元素累积而成k次。

size(C)=2,添加元素(- 1)^(2-1) C(k,2)次

size(C)=3,添加元素(- 1)^(3-1) C(k,3)次

size(C)=k,添加元素(- 1)^(k-1) C(k,k)次

size(C)>k,为了元素被添加了0次。

总次数:


codeforces gym 101350G

题意:赡养n*m的矩形,有K炸弹(K)<20),求出不包括炸弹的矩形的总数字。

思绪:K炸弹的数绝小。,可应用排斥力,该处置仅包括i(i=1)。,2,…,k)炸弹(细说任性i炸弹),处置包括I炸弹的最小矩形。,表达处置。)

#include
using namespace std;
typedef long long ll;
const int N=55;
#define SA(x) SCANF(%D),&x)
#define PR(X) printf("%d\n",x)
#define 德(X) cout<<#x<<" = "<
//--------------------------------------//
ll x[N],y[N];
ll n,m;
int k;
ll solve() {
    ll x1,x2,y1,y2,ans=0;
    为(int) i=1;i<(1<

hdu 4135

题意:区间〔A〕,B]和N切中要害数字数字。

思绪:N集中限定词使分解。

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

using namespace std;
typedef long long ll;
const int N=1000005;

#define 德(X) cout<<#x<<" = "<
//--------------------------------------//

ll p[N];
int main() {
    int T,cas=0; SCANF(%D),&T);
    ll a,b,r,ans1,ans2;
    而(t) {
        scanf("%I64d%I64d%I64d",&a,&b,&r);
        int pcnt=0;
        ans1=ans2=0;
        --a;

        为(ll) i=2;i*i<=r;++i) {//对r质因数使分解
            if(r%i==0) {
                p[pcnt++]=i;
                while(r%i==0) r/=i;
            }
        }
        if(r>1) p[pcnt++]=r;

        为(int) i=1;i<(1<

no comments

Leave me comment