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

pku3904 容斥原理的運用,好題!

解法發現網上一個大牛寫的很好,就轉載過來吧。可憐的我,開始沒想到算法就算了,想到算法后又刻意依賴STL結果o(N)寫成o(logN)成功葬送。
解法

題意:給你n個數,求GCD(gcd(a,b),gcd(c,d))=1的方案數,注意a,b,c,d并不一定兩兩互質,有多組數據

本來這個題的題解有一大把,但沒有講題解的只有貼代碼的。

本來一直在做題,沒有什么時間發題解,但這個題加深了我對容斥原理的理解,所以講一下

這個題的算法是個偽多項式

首先,先將算法流程說一下,原理后面會有

Step 1:用篩法篩出10000內的素數表

Step 2:組合素數,用bool數組記錄由m(m<=5)個素數相乘所得數的m的奇偶

例如:182=2*7*13 ———> m=3 so,bool[182]=false

            2=2 ——>m=1 so,bool[2]=false

            91=7*13 ——>m=2 so,bool[91]=true

            注意12=2^2*3等這種是B=p1^k1*p2^k2+...這種有質因數指數不為一的合數不要處理因為不會用到

以上是預處理

Step 3:讀入當前數為a,將a分解為質因數形式,注意每個質因數只被記錄一次

例如:12=2*2*3 則 12會被分為2*3,多余的2被消去了

Step 4:將分出的素數進行組合,將組合出的a的約數的time+1

例如:12=2^2*3——>12=2*3——>time[2]++,time[3]++,time[6]++

Step 5:處理之后,ans賦值為C(n,4)即n*(n-1)*(n-2)*(n-3)div 24

Step 6:for i 2-->10000

                if bool[i] then ans:=ans-C(time[i],4)

                               else ans:=and+C(time[i],4);

Step 7:輸出ans


原理:首先考慮一個問題,1000以內6,7,8,9的倍數有多少個?答案是

1000div6+1000div7+1000div8+1000div9

-1000div(6*7)-1000div(6*8)-1000div(6*9)-1000div(7*8)-1000div(7*9)-1000div(8*9)

+1000div(6*7*8)+1000div(6*8*9)+1000div(7*8*9)

-1000div(6*7*8*9)

這是容斥原理的一個最簡單的應用,類比這道題,Step3到4其實將每個數a的不重復約數記錄了下來,有公共約數的四個數的方案要從ans中減去,多減的要加上

顯然m為奇時要減,m為偶時要加,這和”1000以內6,7,8,9的倍數有多少個?“這個問題奇偶是反的,由于a最大為10000,所以m最大可以有5 (2*3*5*7*11<10000,2*3*5*7*11*13>10000)

至于12=2*2*3這種約數不處理因為可以分為2*6,而2和6會算一次,所以不須再算。


代碼:
 1 # include <cstdio>
 2 # include <map>
 3 # include <cstring>
 4 # include <algorithm>
 5 using namespace std;
 6 int pa[2000],pp=0,sa[10],sp=0;
 7 int refer[5][10001];
 8 void make_prime()
 9 {
10     bool used[10001];
11     memset(used,true,sizeof(used));
12     for(int i=2;i<=10000;i++)
13          if(used[i])
14          {
15              pa[pp++]=i;
16              for(int j=2*i;j<=10000;j+=i)
17                 used[j]=false;
18          }
19 }
20 void spilt(int n)
21 {
22     sp=0;
23     for(int i=0;i<pp&&n!=1;i++)
24         if(n%pa[i]==0)
25         {
26             sa[sp++]=pa[i];
27             while(n%pa[i]==0)
28                 n/=pa[i];
29         }
30 }
31 void putmap(int n)
32 {
33     spilt(n);
34     for(int i=1;i<(1<<sp);i++)
35     {
36         int n1=0,n2=1;
37         for(int j=0;j<5;j++)
38             if(i&(1<<j))
39                 n1++,n2*=sa[j];
40         refer[n1-1][n2]++;
41     }
42 }
43 long long c(int n)
44 {
45     return (long long)n*(n-1)*(n-2)*(n-3)/4/3/2;
46 }
47 long long getans(int n)
48 {
49     long long ans=c(n);
50     for(int i=0;i<5;i++)
51     {
52         bool flag=false;
53         for(int j=1;j<=10000;j++)
54             if(refer[i][j]>=4)
55                 flag=true,
56                 ans+=c(refer[i][j])*(i%2?1ll:-1ll);
57         if(!flag)break;
58     }
59     return ans;
60 }
61 int main()
62 {
63     int n;
64     make_prime();
65     while(scanf("%d",&n)!=EOF)
66     {
67         memset(refer,0,sizeof(refer));
68         for(int i=0;i<n;i++)
69         {
70             int t;
71             scanf("%d",&t);
72             putmap(t);
73         }
74         printf("%lld\n",getans(n));
75     }
76     return 0;
77 }

posted on 2012-02-17 02:03 yzhw 閱讀(421) 評論(0)  編輯 收藏 引用 所屬分類: combination math

<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

導航

統計

公告

統計系統

留言簿(1)

隨筆分類(227)

文章分類(2)

OJ

最新隨筆

搜索

積分與排名

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲欧美在线观看| 亚洲综合第一页| 中日韩美女免费视频网址在线观看 | 在线视频免费在线观看一区二区| 亚洲啪啪91| 亚洲人成小说网站色在线| 亚洲国产精品视频| 亚洲黄色成人| 亚洲一区二区网站| 久久成人精品电影| 美女脱光内衣内裤视频久久影院| 老巨人导航500精品| 欧美a级片网| 亚洲理论在线| 亚洲欧美另类国产| 久久在线91| 欧美久久成人| 国产精品日韩电影| 在线不卡中文字幕| 99香蕉国产精品偷在线观看| 亚洲一区激情| 久久久五月婷婷| 亚洲黄色片网站| 欧美高清成人| 一本久久青青| 久久国产福利| 欧美日韩另类综合| 尹人成人综合网| 一区二区三区**美女毛片| 欧美一级大片在线观看| 老鸭窝毛片一区二区三区| 亚洲人成网在线播放| 亚洲免费在线观看视频| 欧美激情精品久久久久久免费印度 | 久久综合狠狠综合久久综青草 | 国产欧美日韩在线| 亚洲风情在线资源站| 99国产精品久久久久久久| 欧美在线观看一区二区三区| 欧美国产1区2区| 午夜精品一区二区三区四区| 欧美片第1页综合| 在线免费一区三区| 欧美在线观看网站| 亚洲美女网站| 看欧美日韩国产| 久久国产精品99国产| 欧美久久影院| 在线观看精品视频| 午夜精品视频一区| 亚洲国产综合在线| 久久本道综合色狠狠五月| 欧美视频三区在线播放| 亚洲免费精品| 亚洲激情校园春色| 欧美va天堂va视频va在线| 亚洲福利专区| 欧美暴力喷水在线| 久久免费午夜影院| 国内精品国产成人| 亚洲欧美日韩另类| 99国产精品久久久久老师 | 久久精品一二三| 国产日韩欧美一区二区三区在线观看 | 亚洲欧洲精品一区二区三区 | 欧美成人午夜激情视频| 国产乱理伦片在线观看夜一区| 亚洲毛片av在线| 亚洲国产成人av| 麻豆av福利av久久av| 又紧又大又爽精品一区二区| 久久精品亚洲精品| 亚洲欧美综合| 国产视频欧美视频| 欧美在线免费一级片| 欧美一区二区三区男人的天堂 | 久热精品视频在线免费观看| 亚洲天天影视| 国产欧美日韩综合一区在线播放| 亚洲影视中文字幕| 一区二区三区欧美成人| 国产精品久久久久久久电影| 亚洲在线中文字幕| 亚洲影院在线观看| 国产亚洲欧美一区二区| 久久天天狠狠| 欧美天天影院| 久久国产精品99国产精| 嫩草影视亚洲| 欧美成人精品h版在线观看| 亚洲精品黄色| 亚洲一品av免费观看| 一区免费观看| 亚洲精品免费一二三区| 国产精品伦一区| 久久久久高清| 欧美激情乱人伦| 午夜精品久久久久久久久久久久久 | 国产日韩在线播放| 久久久久久网址| 欧美国产一区视频在线观看| 亚洲男人的天堂在线观看| 欧美一区二区精品在线| 亚洲国产精品久久久久秋霞不卡| 日韩视频在线观看国产| 国产私拍一区| 亚洲国产婷婷综合在线精品 | 亚洲女性裸体视频| 1204国产成人精品视频| 亚洲精品一区二区在线观看| 国产精品国产三级国产普通话三级| 理论片一区二区在线| 国产精品久久九九| 久久综合福利| 国产精品爱啪在线线免费观看| 欧美69视频| 国内精品久久久久久久果冻传媒| 91久久久在线| 亚洲欧洲日韩在线| 欧美中文字幕| 欧美一区在线直播| 欧美视频日韩| 亚洲美女免费精品视频在线观看| 国内精品久久久久影院薰衣草| 亚洲娇小video精品| 樱桃国产成人精品视频| 欧美一区综合| 久久精品在线| 国产午夜久久| 亚洲女女做受ⅹxx高潮| 亚洲天堂免费观看| 欧美日韩福利| 亚洲精品中文在线| 一区二区三区四区五区精品视频 | 久久久噜噜噜久噜久久| 欧美一区二区三区成人| 欧美日韩在线电影| 日韩午夜电影在线观看| 亚洲国产精品久久91精品| 久久激情五月丁香伊人| 欧美一区日韩一区| 国产揄拍国内精品对白| 在线亚洲欧美| 性欧美精品高清| aa级大片欧美| 一区二区欧美在线观看| 欧美精品大片| 亚洲精品一区二区三区在线观看| 在线日韩精品视频| 久久精品国产99国产精品| 国产精品国产三级国产aⅴ9色| 亚洲电影在线| 亚洲人午夜精品| 免费久久精品视频| 久久一综合视频| 亚洲国产一区二区三区在线播 | 精品成人在线观看| 另类成人小视频在线| 免费观看成人鲁鲁鲁鲁鲁视频| 在线观看亚洲| 欧美国产日韩精品| 一区二区三区黄色| 欧美在线你懂的| 亚洲大胆美女视频| 最新亚洲视频| 欧美一区二区三区日韩视频| 国产欧美精品在线观看| 午夜精品福利视频| 久久久久久亚洲精品中文字幕| 国语自产在线不卡| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲第一区在线观看| aa日韩免费精品视频一| 国产精品网站视频| 久久精品视频在线| 亚洲精品免费一区二区三区| 性伦欧美刺激片在线观看| 国产精品一区二区三区观看| 午夜精品久久久久久| 裸体歌舞表演一区二区 | 亚洲欧美日韩在线不卡| 国产欧美日本在线| 久久这里只有| 91久久在线| 久久一区精品| 9久草视频在线视频精品| 国产精品素人视频| 久久av一区二区三区漫画| 欧美电影打屁股sp| 亚洲欧美日韩国产中文在线| 国产在线乱码一区二区三区| 欧美xxx在线观看| 亚洲欧美国产毛片在线| 免费在线成人av| 一区二区三区视频在线播放| 国产亚洲毛片在线| 欧美激情一区二区| 久久精品观看| 亚洲欧美日韩精品久久奇米色影视| 亚洲欧洲日本国产|