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

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>
            欧美劲爆第一页| 亚洲免费激情| 一区二区三区四区五区精品视频| 伊人男人综合视频网| 国内精品视频666| 又紧又大又爽精品一区二区| 在线观看欧美日本| 亚洲日本中文字幕免费在线不卡| 日韩午夜一区| 午夜精品久久| 久久综合色8888| 亚洲黄色视屏| 亚洲看片网站| 午夜精品www| 久热精品视频| 欧美日韩精品一本二本三本| 国产精品久久久久三级| 精品成人在线视频| 中国日韩欧美久久久久久久久| 亚洲女同在线| 欧美高清视频| 午夜一级久久| 欧美另类变人与禽xxxxx| 久久乐国产精品| 久久久国产91| 免费在线观看一区二区| 国产一区在线免费观看| 91久久精品国产91久久性色| 在线一区二区三区四区| 久久久精品999| 亚洲理论在线| 美女主播一区| 国产精品综合不卡av| 亚洲高清在线观看| 性欧美8khd高清极品| 亚洲第一福利在线观看| 亚洲欧美日本在线| 欧美日韩国产欧| 1769国产精品| 久久精品中文字幕免费mv| 99视频精品| 欧美精品成人一区二区在线观看| 国产一区二区三区免费观看 | 久久久久久久91| 欧美午夜电影在线| 亚洲精品免费一区二区三区| 久久综合中文色婷婷| 亚洲一区二区三区四区在线观看 | 亚洲欧美日本另类| 欧美激情一二三区| 久久精品女人| 国产视频精品网| 亚洲欧美资源在线| 亚洲天堂网站在线观看视频| 欧美日韩国产影院| 一本久久综合亚洲鲁鲁| 亚洲国产欧美久久| 欧美xart系列在线观看| 伊人夜夜躁av伊人久久| 久久久久免费视频| 欧美在线免费看| 国产一区二区三区黄| 欧美一区二区久久久| 在线中文字幕一区| 国产精品视频久久久| 欧美一区二区三区视频在线| 亚洲男人的天堂在线| 国产人成精品一区二区三| 欧美一区网站| 欧美一级在线视频| 国产综合久久久久久鬼色| 久久久国产精品一区| 久久久九九九九| 亚洲韩国一区二区三区| 亚洲精品一二区| 国产精品视频久久久| 午夜免费日韩视频| 小黄鸭精品aⅴ导航网站入口| 欧美成人xxx| 欧美xxxx在线观看| 一区二区三区你懂的| 亚洲午夜在线视频| 国产日韩在线一区二区三区| 巨乳诱惑日韩免费av| 欧美成人精品一区| 宅男在线国产精品| 性久久久久久久| 91久久精品久久国产性色也91| 亚洲日韩第九十九页| 欧美日韩综合视频| 久久久久久高潮国产精品视| 久热精品在线视频| 亚洲午夜精品网| 欧美一区二区三区喷汁尤物| 亚洲娇小video精品| 制服丝袜激情欧洲亚洲| 黄色成人在线免费| 一本色道综合亚洲| 狠狠综合久久av一区二区小说| 欧美国产日韩精品| 国产精品无人区| 亚洲二区在线观看| 国产乱码精品一区二区三区不卡| 美女精品自拍一二三四| 欧美日韩一级黄| 蜜桃av一区| 国产精品v亚洲精品v日韩精品| 久久乐国产精品| 欧美网站在线| 亚洲激情网站| 激情欧美一区二区三区| 亚洲天堂av在线免费| 日韩视频一区二区三区| 久久成人资源| 翔田千里一区二区| 欧美日韩亚洲一区二| 欧美激情亚洲视频| 在线观看国产成人av片| 香蕉av福利精品导航| 亚洲一二三四区| 欧美国产视频一区二区| 久久综合九色99| 国产综合激情| 欧美伊人精品成人久久综合97 | 亚洲视频网站在线观看| 免费看的黄色欧美网站| 久久天天躁狠狠躁夜夜爽蜜月| 国产精品久久二区| 99这里只有精品| 在线综合欧美| 欧美亚洲不卡| 亚洲一区精彩视频| 亚洲影院免费| 国产精品区一区二区三区| 一本色道久久88亚洲综合88| 在线综合亚洲| 国产精品久久久久久久久借妻| 日韩午夜剧场| 国产精品爱久久久久久久| 亚洲国产老妈| 99re66热这里只有精品3直播| 欧美福利电影网| 亚洲欧洲另类| 亚洲一区bb| 国产麻豆精品视频| 欧美亚洲尤物久久| 美女脱光内衣内裤视频久久影院| 狠狠色丁香久久婷婷综合丁香| 久久爱91午夜羞羞| 免费亚洲视频| 中日韩男男gay无套| 国产精品免费视频观看| 欧美一区二区视频在线观看| 久久香蕉国产线看观看av| 亚洲成人原创| 欧美日韩精品在线视频| 亚洲男人天堂2024| 老司机成人网| 一区二区三区**美女毛片| 国产精品theporn| 欧美一区二区视频97| 欧美激情一区二区三区成人| 亚洲视频精选在线| 国产欧美日韩免费| 久久综合中文字幕| 亚洲视频久久| 欧美国产日韩在线观看| 亚洲自拍偷拍视频| 尤物精品国产第一福利三区| 欧美国产日韩一区| 欧美亚洲免费在线| 最新日韩在线视频| 久久久国产一区二区| 亚洲理伦电影| 国产一区二区三区四区三区四| 欧美1区3d| 亚洲欧美日韩高清| 亚洲精品国产拍免费91在线| 久久久国产精品亚洲一区| 99精品热视频| 亚洲第一毛片| 国产伦精品一区二区三| 欧美高清视频免费观看| 西瓜成人精品人成网站| 亚洲人成在线观看一区二区| 久久精品国产清高在天天线| 99re热这里只有精品视频| 狠狠干狠狠久久| 国产精品日韩精品| 欧美日本一道本| 免费观看一区| 久久精品99无色码中文字幕| 在线综合亚洲欧美在线视频| 欧美激情国产日韩| 狂野欧美激情性xxxx欧美| 欧美一区二区在线| 一道本一区二区| 99re8这里有精品热视频免费| 亚洲高清视频在线观看| 黄网站免费久久|