青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 4  文章 - 46  trackbacks - 0
<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用鏈接

留言簿(4)

隨筆分類(lèi)

隨筆檔案

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

前言:


這篇文章發(fā)表于http://e-maxx.ru/algo/inclusion_exclusion_principle,原文是俄語(yǔ)的。由于文章確實(shí)很實(shí)用,而且鑒于國(guó)內(nèi)俄文資料翻譯的匱乏,我下決心將其翻譯之。由于俄語(yǔ)對(duì)我來(lái)說(shuō)如同亂碼,而用Google直接翻譯中文的話又變得面目全非,所以只能先用Google翻譯成英語(yǔ),再反復(fù)讀,慢慢理解英語(yǔ)的意思,實(shí)在是弄得我頭昏腦脹。因此在理解文章意思然后翻譯成中文的時(shí)候,中文都不知道如何表述了。而又由于我對(duì)容斥原理知識(shí)的匱乏,很可能有些地方我的表述是錯(cuò)誤的。

如果你對(duì)這篇文章有什么不理解的地方,可以去網(wǎng)站論壇的Feedback版(http://e-maxx.ru/forum/viewforum.php?id=6)發(fā)問(wèn)。不過(guò)這可是俄語(yǔ)的,所以直接問(wèn)我吧:)

QQ:573525822,E-mail: 573525822@qq.com 或 veecci@gmail.com

pdf版本:/Files/vici/inclusion-exclusion.pdf

UPD 9.6:感謝原作者的回復(fù),一些錯(cuò)誤已經(jīng)被修正了。


容斥原理

     原作:e-maxx(Russia)   發(fā)表于 2011.8.25

翻譯:vici

對(duì)容斥原理的描述

容斥原理是一種重要的組合數(shù)學(xué)方法,可以讓你求解任意大小的集合,或者計(jì)算復(fù)合事件的概率。

描述

       容斥原理可以描述如下:

         要計(jì)算幾個(gè)集合并集的大小,我們要先將所有單個(gè)集合的大小計(jì)算出來(lái),然后減去所有兩個(gè)集合相交的部分,再加回所有三個(gè)集合相交的部分,再減去所有四個(gè)集合相交的部分,依此類(lèi)推,一直計(jì)算到所有集合相交的部分。

關(guān)于集合的原理公式

      上述描述的公式形式可以表示如下:
       

        

 

      它可以寫(xiě)得更簡(jiǎn)潔一些,我們將B作為所有Ai的集合,那么容斥原理就變成了:

        

         這個(gè)公式是由 De Moivre (Abraham de Moivre)提出的。

關(guān)于維恩圖的原理

       用維恩圖來(lái)表示集合ABC

       

         那么的面積就是集合ABC各自面積之和減去  的面積,再加上的面積。


         由此,我們也可以解決n個(gè)集合求并的問(wèn)題。

關(guān)于概率論的原理

       設(shè)事件 代表發(fā)生某些事件的概率(即發(fā)生其中至少一個(gè)事件的概率),則:

  

         這個(gè)公式也可以用B代表Ai的集合:


容斥原理的證明

       我們要證明下面的等式:

       

         其中B代表全部Ai的集合

         我們需要證明在Ai集合中的任意元素,都由右邊的算式被正好加上了一次(注意如果是不在Ai集合中的元素,是不會(huì)出現(xiàn)在右邊的算式中的)。

         假設(shè)有一任意元素在k個(gè)Ai集合中(k>=1),我們來(lái)驗(yàn)證這個(gè)元素正好被加了一次:

         當(dāng)size(C)=1時(shí),元素x被加了k次。

         當(dāng)size(C)=2時(shí),元素x被減了C(2,k)次,因?yàn)樵?/span>k個(gè)集合中選擇2個(gè),其中都包含x

         當(dāng)size(C)=3時(shí),元素x被加了C(3,k)次。

         ……

         當(dāng)size(C)=k時(shí),元素x被加/減了C(k,k)次,符號(hào)由sign(-1)^(k-1)決定。

         當(dāng)size(C)>k時(shí),元素x不被考慮。

         然后我們來(lái)計(jì)算所有組合數(shù)的和。

         

         由二項(xiàng)式定理,我們可以將它變成

    

 

         我們把x取為1,這時(shí)表示1-T(其中Tx被加的總次數(shù)),所以,證明完畢。

對(duì)于實(shí)際問(wèn)題的應(yīng)用

       容斥原理的理論需要通過(guò)例子才能很好的理解。

         首先,我們用三個(gè)簡(jiǎn)單的例子來(lái)闡釋這個(gè)理論。然后會(huì)討論一些復(fù)雜問(wèn)題,試看如何用容斥原理來(lái)解決它們。

         其中的“尋找路徑數(shù)”是一個(gè)特殊的例子,它反映了容斥問(wèn)題有時(shí)可以在多項(xiàng)式級(jí)復(fù)雜度內(nèi)解決,不一定需要指數(shù)級(jí)。

一個(gè)簡(jiǎn)單的排列問(wèn)題

       09的數(shù)字組成排列,要求第一個(gè)數(shù)大于1,最后一個(gè)數(shù)小于8,一共有多少種排列?

         我們可以來(lái)計(jì)算它的逆問(wèn)題,即第一個(gè)元素<=1或者最后一個(gè)元素>=8的情況。

         我們?cè)O(shè)第一個(gè)元素<=1時(shí)有X組排列,最后一個(gè)元素>=8時(shí)有Y組排列。那么通過(guò)容斥原理來(lái)解決就可以寫(xiě)成:

       

         經(jīng)過(guò)簡(jiǎn)單的組合運(yùn)算,我們得到了結(jié)果:

         

         然后被總的排列數(shù)10!減,就是最終的答案了。

(0,1,2)序列問(wèn)題

       長(zhǎng)度為n的由數(shù)字012組成的序列,要求每個(gè)數(shù)字至少出現(xiàn)1次,這樣的序列有多少種?

         同樣的,我們轉(zhuǎn)向它的逆問(wèn)題。也就是不出現(xiàn)這些數(shù)字的序列 不出現(xiàn)其中某些數(shù)字的序列。

         我們定義Ai(i=0…2)表示不出現(xiàn)數(shù)字i的序列數(shù),那么由容斥原理,我們得到該逆問(wèn)題的結(jié)果為:


           可以發(fā)現(xiàn)每個(gè)Ai的值都為2^n(因?yàn)檫@些序列中只能包含兩種數(shù)字)。而所有的兩兩組合1(它們只包含1種數(shù)字)。最后,三個(gè)集合的交集為0。(因?yàn)樗话瑪?shù)字,所以不存在)

        要記得我們解決的是它的逆問(wèn)題,所以要用總數(shù)減掉,得到最終結(jié)果:

         

方程整數(shù)解問(wèn)題

       給出一個(gè)方程:

       

         其中

         求這個(gè)方程的整數(shù)解有多少組。

         我們先不去理會(huì)xi<=8的條件,來(lái)考慮所有正整數(shù)解的情況。這個(gè)很容易用組合數(shù)來(lái)求解,我們要把20個(gè)元素分成6組,也就是添加5塊“夾板”,然后在25個(gè)位置中找5塊“夾板”的位置。

         

         然后通過(guò)容斥原理來(lái)討論它的逆問(wèn)題,也就是x>=9時(shí)的解。

         我們定義Akxk>=9并且其他xi>=0時(shí)的集合,同樣我們用上面的添加“夾板”法來(lái)計(jì)算Ak的大小,因?yàn)橛?/span>9個(gè)位置已經(jīng)被xk所利用了,所以:

         

         然后計(jì)算兩個(gè)這樣的集合AkAp的交集:

         

         因?yàn)樗?/span>x的和不能超過(guò)20,所以三個(gè)或三個(gè)以上這樣的集合時(shí)是不能同時(shí)出現(xiàn)的,它們的交集都為0。最后我們用總數(shù)剪掉用容斥原理所求逆問(wèn)題的答案,就得到了最終結(jié)果:

         

求指定區(qū)間內(nèi)與n互素的數(shù)的個(gè)數(shù):

       給出整數(shù)nr。求區(qū)間[1;r]中與n互素的數(shù)的個(gè)數(shù)。

         去解決它的逆問(wèn)題,求不與n互素的數(shù)的個(gè)數(shù)。

         考慮n的所有素因子pi(i=1…k)

         [1;r]中有多少數(shù)能被pi整除呢?它就是:

       

         然而,如果我們單純將所有結(jié)果相加,會(huì)得到錯(cuò)誤答案。有些數(shù)可能被統(tǒng)計(jì)多次(被好幾個(gè)素因子整除)。所以,我們要運(yùn)用容斥原理來(lái)解決。

         我們可以用2^k的算法求出所有的pi組合,然后計(jì)算每種組合的pi乘積,通過(guò)容斥原理來(lái)對(duì)結(jié)果進(jìn)行加減處理。

         關(guān)于此問(wèn)題的最終實(shí)現(xiàn):

int solve (int n, int r) {
        vector<int> p;
        for (int i=2; i*i<=n; ++i)
               if (n % i == 0) {
                       p.push_back (i);
                       while (n % i == 0)
                               n /= i;
               }
        if (n > 1)
               p.push_back (n);
 
        int sum = 0;
        for (int msk=1; msk<(1<<p.size()); ++msk) {
               int mult = 1,
                       bits = 0;
               for (int i=0; i<(int)p.size(); ++i)
                       if (msk & (1<<i)) {
                               ++bits;
                               mult *= p[i];
                       }
 
               int cur = r / mult;
               if (bits % 2 == 1)
                       sum += cur;
               else
                       sum -= cur;
        }
 
        return r - sum;
}

算法的復(fù)雜度為 

求在給定區(qū)間內(nèi),能被給定集合至少一個(gè)數(shù)整除的數(shù)個(gè)數(shù)

       給出n個(gè)整數(shù)ai和整數(shù)r。求在區(qū)間[1;r]中,至少能被一個(gè)ai整除的數(shù)有多少。

         解決此題的思路和上題差不多,計(jì)算ai所能組成的各種集合(這里將集合中ai的最小公倍數(shù)作為除數(shù))在區(qū)間中滿(mǎn)足的數(shù)的個(gè)數(shù),然后利用容斥原理實(shí)現(xiàn)加減。

         此題中實(shí)現(xiàn)所有集合的枚舉,需要2^n的復(fù)雜度,求解lcm需要O(nlogr)的復(fù)雜度。

能滿(mǎn)足一定數(shù)目匹配的字符串的個(gè)數(shù)問(wèn)題

       給出n個(gè)匹配串,它們長(zhǎng)度相同,其中有一些’?’表示待匹配的字母。然后給出一個(gè)整數(shù)k,求能正好匹配k個(gè)匹配串的字符串的個(gè)數(shù)。更進(jìn)一步,求至少匹配k個(gè)匹配串的字符串的個(gè)數(shù)。

         首先我們會(huì)發(fā)現(xiàn),我們很容易找到能匹配所有匹配串的字符串。只需要對(duì)比所有匹配串,去在每一列中找出現(xiàn)的字母(或者這一列全是’?’,或者這一列出現(xiàn)了唯一的字母,否則這樣的字符串就存在),最后所有字母組成的單詞即為所求。

         現(xiàn)在我們來(lái)學(xué)習(xí)如何解決第一個(gè)問(wèn)題:能正好匹配k個(gè)匹配串的字符串。

         我們?cè)?/span>n個(gè)匹配串中選出k個(gè),作為集合X,統(tǒng)計(jì)滿(mǎn)足集合X中匹配的字符串?dāng)?shù)。求解這個(gè)問(wèn)題時(shí)應(yīng)用容斥原理,對(duì)X的所有超集進(jìn)行運(yùn)算,得到每個(gè)X集合的結(jié)果:

       

         此處f(Y)代表滿(mǎn)足匹配集合Y的字符串?dāng)?shù)。

         如果我們將所有的ans(X)相加,就可以得到最終結(jié)果:

         

         這樣,就得到了一個(gè)復(fù)雜度的解法。

         這個(gè)算法可以作一些改進(jìn),因?yàn)樵谇蠼?/span>ans(X)時(shí)有些Y集合是重復(fù)的。

         回到利用容斥原理公式可以發(fā)現(xiàn),當(dāng)選定一個(gè)Y時(shí),所有 X的結(jié)果都是相同的,其符號(hào)都為。所以可以用如下公式求解:

         

         這樣就得到了一個(gè)復(fù)雜度的解法。

         現(xiàn)在我們來(lái)求解第二個(gè)問(wèn)題:能滿(mǎn)足至少k個(gè)匹配的字符串有多少個(gè)。

         顯然的,我們可以用問(wèn)題一的方法來(lái)計(jì)算滿(mǎn)足kn的所有結(jié)果。問(wèn)題一的結(jié)論依然成立,不同之處在于這個(gè)問(wèn)題中的X不是大小都為k的,而是>=k的所有集合。

         如此進(jìn)行計(jì)算,最后將f(Y)作為另一個(gè)因子:將所有的ans做和,有點(diǎn)類(lèi)似二項(xiàng)式展開(kāi):


在《具體數(shù)學(xué)》( Graham, Knuth, Patashnik. "Concrete Mathematics" [1998] )中,介紹了一個(gè)著名的關(guān)于二項(xiàng)式系數(shù)的公式:


根據(jù)這個(gè)公式,可以將前面的結(jié)果進(jìn)行化簡(jiǎn):


那么,對(duì)于這個(gè)問(wèn)題,我們也得到了一個(gè)的解法:


路徑的數(shù)目問(wèn)題

       在一個(gè)方格陣中,有k個(gè)格子是不可穿越的墻。一開(kāi)始在格子(1,1)(最左下角的格子)中有一個(gè)機(jī)器人。這個(gè)機(jī)器人只能向上或向右行進(jìn),最后它將到達(dá)位于格子(n,m)的籠子里,其間不能經(jīng)過(guò)障礙物格子。求一共有多少種路線可以到達(dá)終點(diǎn)。

         為了方便區(qū)分所有障礙物格子,我們建立坐標(biāo)系,用(x,y)表示格子的坐標(biāo)。

         首先我們考慮沒(méi)有障礙物的時(shí)候:也就是如何求從一個(gè)點(diǎn)到另一個(gè)點(diǎn)的路徑數(shù)。如果從一個(gè)點(diǎn)在一個(gè)方向要走x個(gè)格子,在另一個(gè)方向要走y個(gè)格子,那么通過(guò)簡(jiǎn)單的組合原理可以得知結(jié)果為:

         

         現(xiàn)在來(lái)考慮有障礙物時(shí)的情況,我們可以利用容斥原理:求出至少經(jīng)過(guò)一個(gè)障礙物時(shí)的路徑數(shù)。

         對(duì)于這個(gè)例子,你可以枚舉所有障礙物的子集,作為需要要經(jīng)過(guò)的,計(jì)算經(jīng)過(guò)該集合障礙物的路徑數(shù)(求從原點(diǎn)到第一個(gè)障礙物的路徑數(shù)、第一個(gè)障礙物到第二個(gè)障礙物的路徑數(shù)最后對(duì)這些路徑數(shù)求乘積),然后通過(guò)容斥原理,對(duì)這些結(jié)果作加法或減法。

         然而,它是一個(gè)非多項(xiàng)式的解法,復(fù)雜度。下面我們將介紹一個(gè)多項(xiàng)式的解法

         我們運(yùn)用動(dòng)態(tài)規(guī)劃:令d[i][j]代表從第i個(gè)點(diǎn)到第j個(gè)點(diǎn),不經(jīng)過(guò)任何障礙物時(shí)的路徑數(shù)(當(dāng)然除了ij)。那么我們總共需要k+2個(gè)點(diǎn),包括k個(gè)障礙物點(diǎn)以及起點(diǎn)和終點(diǎn)。

         首先我們算出從i點(diǎn)到j點(diǎn)的所有路徑數(shù),然后減掉經(jīng)過(guò)障礙物的那些“壞”的路線。讓我們看看如何計(jì)算“壞”的路線:枚舉ij之間的所有障礙物點(diǎn)i<l<j,那么從ij的“壞”路徑數(shù)就是所有d[i][l]d[l][j]的乘積最后求和。再被總路徑數(shù)減掉就是d[i][j]的結(jié)果。

         我們已經(jīng)知道計(jì)算總路徑數(shù)的復(fù)雜度為 ,那么該解法的總復(fù)雜度為 

         (譯注:這段算法有問(wèn)題,事實(shí)上可以用O(k^2)方法解決

 素?cái)?shù)四元組的個(gè)數(shù)問(wèn)題

       給出n個(gè)數(shù),從其中選出4個(gè)數(shù),使它們的最大公約數(shù)為1,問(wèn)總共有多少中取法。

         我們解決它的逆問(wèn)題:求最大公約數(shù)d>1的四元組的個(gè)數(shù)。

         運(yùn)用容斥原理,將求得的對(duì)于每個(gè)d的四元組個(gè)數(shù)的結(jié)果進(jìn)行加減。

         

         其中deg(d)代表d的質(zhì)因子個(gè)數(shù),f(d)代表四個(gè)數(shù)都能被d整除的四元組的個(gè)數(shù)。

         求解f(d)時(shí),只需要利用組合方法,求從所有滿(mǎn)足被d整除的ai中選4個(gè)的方法數(shù)。

         然后利用容斥原理,統(tǒng)計(jì)出所有能被一個(gè)素?cái)?shù)整除的四元組個(gè)數(shù),然后減掉所有能被兩個(gè)素?cái)?shù)整除的四元組個(gè)數(shù),再加上被三個(gè)素?cái)?shù)整除的四元組個(gè)數(shù)

和睦數(shù)三元組的個(gè)數(shù)問(wèn)題

       給出一個(gè)整數(shù) 。選出a, b, c (其中2<=a<b<c<=n),組成和睦三元組,即:

         · 或者滿(mǎn)足    

· 或者滿(mǎn)足

首先,我們考慮它的逆問(wèn)題:也就是不和睦三元組的個(gè)數(shù)。

然后,我們可以發(fā)現(xiàn),在每個(gè)不和睦三元組的三個(gè)元素中,我們都能找到正好兩個(gè)元素滿(mǎn)足:它與一個(gè)元素互素,并且與另一個(gè)元素不互素。

所以,我們只需枚舉2n的所有數(shù),將每個(gè)數(shù)的與其互素的數(shù)的個(gè)數(shù)和與其不互素的數(shù)的個(gè)數(shù)相乘,最后求和并除以2,就是要求的逆問(wèn)題的答案。

現(xiàn)在我們要考慮這個(gè)問(wèn)題,如何求與2n這些數(shù)互素(不互素)的數(shù)的個(gè)數(shù)。雖然求解與一個(gè)數(shù)互素?cái)?shù)的個(gè)數(shù)的解法在前面已經(jīng)提到過(guò)了,但在此并不合適,因?yàn)楝F(xiàn)在要求2n所有數(shù)的結(jié)果,分別求解顯然效率太低。

所以,我們需要一個(gè)更快的算法,可以一次算出2n所有數(shù)的結(jié)果。

在這里,我們可以使用改進(jìn)的埃拉托色尼篩法

· 首先,對(duì)于2n的所有數(shù),我們要知道構(gòu)成它的素?cái)?shù)中是否有次數(shù)大于1的,為了應(yīng)用容斥原理,我們還有知道它們由多少種不同的素?cái)?shù)構(gòu)成。

對(duì)于這個(gè)問(wèn)題,我們定義數(shù)組deg[i]:表示i由多少種不同素?cái)?shù)構(gòu)成,以及good[i]:取值truefalse,表示i包含素?cái)?shù)的次數(shù)小于等于1是否成立。

再利用埃拉托色尼篩法,在遍歷到某個(gè)素?cái)?shù)i時(shí),枚舉它在2n范圍內(nèi)的所有倍數(shù),更新這些倍數(shù)的deg[]值,如果有倍數(shù)包含了多個(gè)i,那么就把這個(gè)倍數(shù)的good[]值賦為false

· 然后,利用容斥原理,求出2n每個(gè)數(shù)的cnt[i]:在2n中不與i互素的數(shù)的個(gè)數(shù)。

回想容斥原理的公式,它所求的集合是不會(huì)包含重復(fù)元素的。也就是如果這個(gè)集合包含的某個(gè)素?cái)?shù)多于一次,它們不應(yīng)再被考慮。

所以只有當(dāng)一個(gè)數(shù)i滿(mǎn)足good[i]=true時(shí),它才會(huì)被用于容斥原理。枚舉i的所有倍數(shù)i*j,那么對(duì)于i*j,就有N/i個(gè)與i*j同樣包含i(素?cái)?shù)集合)的數(shù)。將這些結(jié)果進(jìn)行加減,符號(hào)由deg[i](素?cái)?shù)集合的大小)決定。如果deg[i]為奇數(shù),那么我們要用加號(hào),否則用減號(hào)。

程序?qū)崿F(xiàn):

int n;
bool good[MAXN];
int deg[MAXN], cnt[MAXN];
 
long long solve() {
         memset (good, 1, sizeof good);
         memset (deg, 0, sizeof deg);
         memset (cnt, 0, sizeof cnt);
 
         long long ans_bad = 0;
         for (int i=2; i<=n; ++i) {
                 if (good[i]) {
                          if (deg[i] == 0) deg[i] = 1;
                          for (int j=1; i*j<=n; ++j) {
                                   if (j > 1 && deg[i] == 1)
                                            if (j % i == 0)
                                                    good[i*j] = false;
                                            else
                                                    ++deg[i*j];
                                   cnt[i*j] += (n / i) * (deg[i]%2==1 ? +1 : -1);
                          }
                 }
                 ans_bad += (cnt[i] - 1) * 1ll * (n - cnt[i] - 1);
         }
         return (n-1) * 1ll * (n-2) * (n-3) / 6 - ans_bad / 2;
}

最終算法的復(fù)雜度為 ,因?yàn)閷?duì)于大部分i都要進(jìn)行n/i次枚舉。

錯(cuò)排問(wèn)題

       我們想要證明如下的求解長(zhǎng)度為n序列的錯(cuò)排數(shù)的公式:

      

         它的近似結(jié)果為:

         

         (此外,如果將這個(gè)近似式的結(jié)果向其最近的整數(shù)舍入,你就可以得到準(zhǔn)確結(jié)果)

         我們定義Ak:在長(zhǎng)度為n的序列中,有一個(gè)不動(dòng)點(diǎn)位置為k(1<=k<=n)時(shí)的序列集合。

         現(xiàn)在我們運(yùn)用容斥原理來(lái)計(jì)算至少包含有一個(gè)不動(dòng)點(diǎn)的排列數(shù),要計(jì)算這個(gè),我們必須先算出所有Ak、以及它們的交集的排列數(shù)。




因?yàn)槲覀冎喇?dāng)有x個(gè)不動(dòng)點(diǎn)時(shí),所有不動(dòng)點(diǎn)的位置是固定的,而其它點(diǎn)可以任意排列。

用容斥原理對(duì)結(jié)果進(jìn)行帶入,而從n個(gè)點(diǎn)中選x個(gè)不動(dòng)點(diǎn)的組合數(shù)為,那么至少包含一個(gè)不動(dòng)點(diǎn)的排列數(shù)為:


那么不包含不動(dòng)點(diǎn)(即錯(cuò)排數(shù))的結(jié)果就是:


化簡(jiǎn)這個(gè)式子,我們得到了錯(cuò)排數(shù)的準(zhǔn)確式和近似式:


(因?yàn)槔ㄌ?hào)中是泰勒展開(kāi)式的前n+1項(xiàng))

用這個(gè)式子也可以解決一些類(lèi)似的問(wèn)題,如果現(xiàn)在求有m個(gè)不動(dòng)點(diǎn)的排列數(shù),那么我們可以對(duì)上式進(jìn)行修改,也就是將括號(hào)中的累加到1/n!改成累加到1/(n-m)!

OJ的相關(guān)題目

這里列出了一些可以用容斥原理解決的習(xí)題。 
· UVA #10325 "The Lottery" [難度:簡(jiǎn)單]

· UVA #11806 "Cheerleaders" [難度:簡(jiǎn)單]

· TopCoder SRM 477 "CarelessSecretary" [難度:簡(jiǎn)單]

· TopCoder TCHS 16 "Divisibility" [難度:簡(jiǎn)單]

· SPOJ #6285 NGM2 "Another Game With Numbers" [難度:簡(jiǎn)單]

· TopCoder SRM 382 "CharmingTicketsEasy" [難度:中等]

· TopCoder SRM 390 "SetOfPatterns"  [難度:中等]

· TopCoder SRM 176 "Deranged" [難度:中等]

· TopCoder SRM 457 "TheHexagonsDivOne" [難度:中等]

· SPOJ #4191 MSKYCODE "Sky Code" [難度:中等]

· SPOJ #4168 SQFREE "Square-free integers" [難度:中等]

· CodeChef "Count Relations" [難度:中等]

      

參考文獻(xiàn)

       Debra K. Borkovitz. 







 


FeedBack:
# re: 容斥原理(翻譯) 2011-09-06 18:06 e-maxx
Hi.

I don't know the Chinese, so it was a great fun to read a russian=>english=>chinese=>english translation :)

You've done a great job, thank you. All your corrections were absolutely right, and I've removed the bugs from my article.

P.S. How did you manage to know about this russian article? :)  回復(fù)  更多評(píng)論
  
# re: 容斥原理(翻譯) 2011-09-07 00:08 vici
@e-maxx

I feel flattered by your rapid reply.

I knew your site through codeforces.com by chance, and then immediately I was attracted by the articles. The thoughts of the articles are very clear and clever. Therefore I was able to translate it, although it's hard to read Russian=>English translation.

And it's very religious of you to do the correction works.  回復(fù)  更多評(píng)論
  
# re: 容斥原理(翻譯) 2011-09-29 20:56 forget~
“同樣的,我們轉(zhuǎn)向它的逆問(wèn)題。也就是不出現(xiàn)這些數(shù)字的序列。”這句貌似有錯(cuò),不然這句“長(zhǎng)度為n的由數(shù)字0,1,2組成的序列,”和這句“同樣的,我們轉(zhuǎn)向它的逆問(wèn)題。也就是不出現(xiàn)這些數(shù)字的序列。”矛盾。所以它的逆問(wèn)題是不出現(xiàn)0或者不出現(xiàn)1或者不出現(xiàn)2的序列,強(qiáng)調(diào)下或者。

  回復(fù)  更多評(píng)論
  
# re: 容斥原理(翻譯) 2011-09-29 21:51 vici
@forget~
fixed.
3q  回復(fù)  更多評(píng)論
  
# re: 容斥原理(翻譯) 2012-02-05 19:42 forget~
@vici
我想問(wèn)下那個(gè) 整數(shù)解問(wèn)題
計(jì)算兩個(gè)這樣的集合Ak、Ap的交集,Ap指的是什么?一直都沒(méi)說(shuō)明Ap是什么?




  回復(fù)  更多評(píng)論
  
# re: 容斥原理(翻譯) 2012-02-05 19:56 forget~
@vici
哦,我明白了Ap也是跟Ak一樣的集合,Ak=c(16,5).但為什么他們的交集為
C(7,5)呢?  回復(fù)  更多評(píng)論
  
# re: 容斥原理(翻譯) 2012-02-05 20:39 vici
@forget~
Ak和Ap代表兩個(gè)不同的“xk>=9并且其他xi>=0的集合”,那么Ak與Ap的交集可以理解為“在Ak中xp>=9并且其他xi>=0的集合”,其中9個(gè)位置已被xp占用,那么最后結(jié)果就是C(7, 5)  回復(fù)  更多評(píng)論
  
# re: 容斥原理(翻譯) 2012-09-15 19:05 fremn
省略了很多細(xì)節(jié),路徑數(shù)目那題感覺(jué)真的有錯(cuò)誤。我也向樓主那樣用google從俄語(yǔ)到英語(yǔ),再手動(dòng)翻譯。多看見(jiàn)了很多東西  回復(fù)  更多評(píng)論
  
# re: 容斥原理(翻譯) 2012-09-15 19:26 fremn
Climb the first obstacle To which we attack, then the number of paths is equal to Multiplied by /*the number of arbitrary ways of t in j*/ . Summing it all We count the number of "bad" ways.
路徑的數(shù)目問(wèn)題 中 倒數(shù)第二句話。
我按照樓主的方法用翻譯了下,翻譯錯(cuò)了。/* */ 號(hào)中的話應(yīng)該是從t到j(luò)的任意一種走法(不管通過(guò)的有沒(méi)有壞點(diǎn))。這樣枚舉出來(lái)的就可以知道沒(méi)有重復(fù)不需要容斥原理了,而且 t到j(luò)的任意一條路徑用組合數(shù)求O(1)的時(shí)間  回復(fù)  更多評(píng)論
  
# re: 容斥原理(翻譯) 2013-05-04 11:22 acfish
弱弱地問(wèn)一句,在求和睦數(shù)三元組的個(gè)數(shù)問(wèn)題中,最后為什么要*111?  回復(fù)  更多評(píng)論
  
# re: 容斥原理(翻譯) 2013-05-11 17:24 vici
@acfish
是1LL 防止int溢出  回復(fù)  更多評(píng)論
  
# re: 容斥原理(翻譯) 2013-09-07 18:54 JaceForce
舟哥哥好厲害  回復(fù)  更多評(píng)論
  
# re: 容斥原理(翻譯) 2015-08-17 17:59 guanjun
原來(lái)是舟哥哥!  回復(fù)  更多評(píng)論
  
# re: 容斥原理(翻譯) 2016-08-08 13:09 gaosaihang
我去 俊爺!!!  回復(fù)  更多評(píng)論
  

只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              欧美国产日韩免费| 国产精品免费在线| 亚洲免费久久| 亚洲黄色免费网站| 理论片一区二区在线| 欧美一区二区| 久久伊人亚洲| 欧美激情一区二区三区成人| 亚洲福利一区| 一本色道88久久加勒比精品| 亚洲午夜在线视频| 久久久精品国产一区二区三区| 欧美中文字幕视频在线观看| 久久青草欧美一区二区三区| 久久久久久久尹人综合网亚洲| 久久精品视频免费观看| 久久久久久亚洲综合影院红桃| 性欧美videos另类喷潮| 国产亚洲精品v| 一区二区亚洲精品| 亚洲乱码国产乱码精品精可以看| 99天天综合性| 久久久av网站| 亚洲丁香婷深爱综合| 亚洲图片欧洲图片av| 欧美一级夜夜爽| 欧美久久久久免费| 国产精品男gay被猛男狂揉视频| 樱桃成人精品视频在线播放| 亚洲美女淫视频| 性色av一区二区三区| 亚洲成色最大综合在线| 亚洲小视频在线观看| 国产精品丝袜xxxxxxx| 夜夜嗨av一区二区三区中文字幕| 欧美在线视频一区二区三区| 欧美屁股在线| 精品999久久久| 午夜免费久久久久| 亚洲精品欧美| 亚洲欧美精品一区| 欧美日韩一二三区| 日韩一级成人av| 免费av成人在线| 香蕉免费一区二区三区在线观看| 欧美超级免费视 在线| 激情五月婷婷综合| 久久精品国产免费看久久精品| 久久久999国产| 国产乱理伦片在线观看夜一区| 亚洲作爱视频| 亚洲精品久久嫩草网站秘色| 久久综合精品一区| 国产精品国产三级国产aⅴ9色 | 久久精品国亚洲| 欧美日本中文字幕| 欧美性猛交一区二区三区精品| 伊人精品在线| 西西裸体人体做爰大胆久久久| 亚洲精品在线一区二区| 久久久精品国产免大香伊 | 美女久久一区| 亚洲欧美美女| 国产精品卡一卡二| 99成人在线| 亚洲第一在线| 午夜国产精品视频免费体验区| 欧美视频一二三区| 亚洲小说欧美另类社区| 亚洲国产免费看| 国产精品草莓在线免费观看| 在线视频成人| 亚洲欧美日韩国产综合精品二区| 亚洲二区在线视频| 久久夜色精品国产| 亚洲黄网站在线观看| 欧美a级片网| 免费成人激情视频| 亚洲伦理一区| 在线亚洲欧美视频| 国产免费亚洲高清| 久久噜噜亚洲综合| 久久不射2019中文字幕| 在线观看亚洲视频啊啊啊啊| 欧美激情一区二区在线| 欧美高清视频www夜色资源网| 亚洲视频网在线直播| 先锋影音久久| 亚洲久久在线| 性欧美超级视频| 亚洲国产精品视频一区| 亚洲精品美女免费| 国产欧美视频一区二区| 欧美国产日韩一区| 欧美三日本三级少妇三2023| 久久经典综合| 欧美日韩二区三区| 久久9热精品视频| 免费亚洲视频| 欧美综合二区| 欧美韩国日本一区| 欧美一区二区三区四区视频| 能在线观看的日韩av| 亚洲欧美一级二级三级| 久久都是精品| 亚洲欧美国产另类| 牛牛影视久久网| 久久精彩视频| 欧美三级第一页| 美女视频一区免费观看| 欧美日韩一区在线视频| 麻豆91精品| 国产欧美大片| 亚洲欧洲精品一区二区| 国产有码在线一区二区视频| 亚洲最新色图| 亚洲激情社区| 久久久久久69| 先锋影音国产精品| 免费91麻豆精品国产自产在线观看| 亚洲一区二区黄色| 欧美国产第二页| 欧美黄色小视频| 狠狠入ady亚洲精品| 中日韩美女免费视频网站在线观看| 亚洲国产精品毛片| 亚洲欧洲日产国产综合网| 亚洲国产女人aaa毛片在线| 亚洲欧美国产日韩中文字幕| 中文欧美日韩| 欧美国产先锋| 欧美高清在线视频| 在线观看亚洲a| 午夜国产一区| 亚洲婷婷在线| 亚洲少妇自拍| 欧美日韩大片| 亚洲毛片av在线| 99精品欧美一区| 欧美高清自拍一区| 你懂的国产精品| 在线免费观看日本欧美| 性欧美1819性猛交| 久久久精品动漫| 在线不卡中文字幕| 久久亚洲综合| 久久久国产精品一区二区中文| 国产日韩欧美精品一区| 欧美在线黄色| 久久影院午夜论| 亚洲国产欧美一区二区三区久久 | 一本久道久久综合中文字幕| 亚洲精品美女| 欧美精品九九| 一区二区三区四区精品| 午夜精品久久久久久久99樱桃| 国产精品久久久久婷婷| 一区二区三区精密机械公司| 亚洲午夜成aⅴ人片| 国产精品久久久久国产a级| 亚洲一区美女视频在线观看免费| 亚洲欧美日韩综合| 国产日韩一区二区三区在线| 欧美在线播放| 欧美激情在线播放| 99re热精品| 国产精品毛片在线| 久久婷婷国产麻豆91天堂| 欧美黑人在线播放| 一区二区三区 在线观看视| 国产精品一区=区| 久久久久91| 夜色激情一区二区| 久久精品国产久精国产爱| 最新国产の精品合集bt伙计| 欧美激情中文不卡| 亚洲视频图片小说| 欧美激情一区二区| 亚洲一级在线| 狠狠综合久久| 欧美日韩18| 久久av一区| 一区二区三区日韩在线观看| 午夜精品久久久久久久男人的天堂 | 欧美大片第1页| 一区二区三区四区五区精品| 欧美一区二区三区免费视频| 精品成人一区二区三区| 欧美三级视频| 久久综合久久美利坚合众国| 亚洲视频国产视频| 亚洲国产裸拍裸体视频在线观看乱了 | 亚洲国产成人在线| 国产精品久久久久免费a∨| 久久亚洲不卡| 午夜影院日韩| 中文国产亚洲喷潮| 91久久国产综合久久| 女人天堂亚洲aⅴ在线观看| 欧美一区二区三区久久精品茉莉花|