• <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>
            xiaoguozi's Blog
            Pay it forword - 我并不覺的自豪,我所嘗試的事情都失敗了······習慣原本生活的人不容易改變,就算現狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預料,人們需要更細心的觀察別人,要隨時注意才能保護別人,因為他們未必知道自己要什么·····
            計算二分圖的算法有網絡流算法和匈牙利算法(目前就知道這兩種),其中匈牙利算法是比較巧妙的,具體過程如下(轉自組合數學):

            令g
            =(x,*,y)是一個二分圖,其中x={x1,x2},y={y1,y2,.}.令m為g中的任意匹配。 

            1。將x的所有不與m的邊關聯的頂點表上¥,并稱所有的頂點為未掃描的。轉到2。 

            2。如果在上一步沒有新的標記加到x的頂點上,則停,否則 ,轉3 

            3。當存在x被標記但未被掃描的頂點時,選擇一個被標記但未被掃描的x的頂點,比如xi,用(xi)標 

            記y 的所有頂點,這些頂點被不屬于m且尚未標記的邊連到xi。 

             現在頂點xi 是被掃描的。如果不存在被標記但未被掃描的頂點,轉4。 

            4。如果在步驟3沒有新的標記被標記到y的頂點上,則停,否則轉5。 

            5。當存在y被標記但未被掃描的頂點時。選擇y的一個被標記但未被掃描的頂點,比如yj, 

            用(yj)標記x的頂點,這些頂點被屬于m且尚未標記的邊連到yj。現在,頂點yj是被掃描的。 

            如果不存在被標記但未被掃描的頂點則轉道2。 

            由于每一個頂點最多被標記一次且由于每一個頂點最多被掃描一次,本匹配算法在有限步內終止。
            匈牙利算法思想:
            今天剛看了二分匹配..以前的沒怎么好好想過,今天看了下,其實很簡單..就是不斷找增廣路
            過程...有x,y兩個集合,對x這個集合每個點遍歷一遍,遍歷當前點時,如果y中有個未匹配的點
            ,直接跳出,ans++,如果在y中所有和x的點都匹配過,則對這些點再找,如果有其他的路,則
            更新,ans++,如果沒,則把當前的點置為匹配的點,ans不變..x++;

            相關題目:
            http://acm.hdu.edu.cn/showproblem.php?pid=1151
            http://acm.hdu.edu.cn/showproblem.php?pid=1068
            http://acm.hdu.edu.cn/showproblem.php?pid=1150
            http://acm.hdu.edu.cn/showproblem.php?pid=1281
            http://acm.hdu.edu.cn/showproblem.php?pid=1498
            http://acm.hdu.edu.cn/showproblem.php?pid=1528
            http://acm.hdu.edu.cn/showproblem.php?pid=1507
            相關知識:
            二分圖的最小頂點覆蓋=二分圖的最大匹配數
            二分圖的最大獨立集=頂點數-二分圖的最大匹配數
            二分圖的最小路徑覆蓋=頂點數-二分圖的最大匹配數
            posted @ 2008-07-31 15:56 小果子 閱讀(693) | 評論 (0)編輯 收藏

            http://acm.hdu.edu.cn/showproblem.php?pid=1530(赤裸裸的最大團)

            http://acm.zju.edu.cn/show_problem.php?pid=3008

             1 #include <iostream>
             2 #include <vector>
             3 #include <cmath>
             4 
             5 using namespace std;
             6 class Num
             7 {
             8 public:
             9     void factorization(){
            10         //n==1特殊處理
            11 
            12         //
            13         //n>1
            14         int i=0;
            15         for(i=0;n%2==0&&n>1;n/=2,i++);
            16         if(i>0){
            17             prime.push_back(2);
            18             num.push_back(i);
            19         }
            20 
            21         int t=0,j;
            22         for(i=3;i<=n;i+=2){
            23               for(j=0;n%i==0&&n>1;n/=i,j++);
            24               if(j>0){
            25                   prime.push_back(i);
            26                   num.push_back(j);
            27               }
            28         }
            29         return;
            30     }
            31     Num(int x=0):n(x){
            32         prime.clear();
            33         num.clear();
            34     }
            35     vector<int> prime,num;
            36     int n;
            37 };
            38 Num p;
            39 int n,m,ans;
            40 void dfs(int i,unsigned long long val)
            41 {
            42     unsigned long long tt=val;
            43     unsigned long long t=1;
            44     for(int j=0;i<p.num.size()&&j<=p.num[i]*m;j++){
            45         val*=t;
            46         if(val<=n&&i==p.num.size()-1){
            47             ans++;
            48             //return;
            49         }
            50         if(val<=n&&i+1<p.num.size()){
            51             dfs(i+1,val);
            52         }
            53         if(val>n)return;
            54         t*=p.prime[i];
            55         val=tt;
            56     }
            57     return ;        
            58 }
            59 int main()
            60 {
            61     while(scanf("%d%d",&n,&m)!=EOF){
            62         if(n==1){
            63             printf("1\n");
            64             continue;
            65         }
            66         ans=0;
            67         p.n=n;
            68         p.num.clear();
            69         p.prime.clear();
            70         p.factorization();
            71         dfs(0,1);
            72         printf("%d\n",ans);
            73     }
            74     return 0;
            75 }
            posted @ 2008-07-28 20:58 小果子 閱讀(377) | 評論 (0)編輯 收藏
             1 #include <iostream>
             2 #include <algorithm>
             3 #include <vector>
             4 
             5 using namespace std;
             6 struct Node
             7 {
             8     int xi,yi;
             9     Node(int x=0,int y=0):xi(x),yi(y){};
            10 };
            11 bool op1(const Node& a,const Node& b)
            12 {
            13     if(a.xi==b.xi)return a.yi<b.yi;
            14     return a.xi<b.xi;
            15 }
            16 bool op2(const Node& a,const Node& b)
            17 {
            18     if(a.yi==b.yi)return a.xi<b.xi;
            19     return a.yi<b.yi;
            20 };
            21 
            22 int marx[10005];
            23 
            24 vector<Node> vecx,vecy;
            25 int main()
            26 {
            27     int c;
            28     scanf("%d",&c);
            29     while(c--){
            30         vecx.clear();
            31         vecy.clear();
            32         int n,m;
            33         scanf("%d%d",&n,&m);
            34         int x,y;
            35         for(int i=0;i<n;i++){
            36             scanf("%d%d",&x,&y);
            37             Node tmp(x,y);
            38             ++marx[x];
            39             vecx.push_back(tmp);
            40             vecy.push_back(tmp);
            41         }
            42 
            43         sort(vecx.begin(),vecx.end(),op1);
            44         sort(vecy.begin(),vecy.end(),op2);
            45 
            46         int ans=0x7fffffff;
            47         int start=0,cnt,tt,end=0;
            48         for(int i=0;i<n;++i){
            49             for(int j=i;j<n;++j){
            50                 start=0;
            51                 end=-1;
            52                 cnt=0;
            53                 tt=0;
            54                 for(start=0;start<n&&end<n;){
            55                     if(cnt<m){
            56                         end++;
            57                         if(end==n)break;
            58                         if(vecx[end].yi<=vecy[j].yi&&vecx[end].yi>=vecy[i].yi)cnt++;
            59                     }
            60                     else{
            61                         if(vecx[start].yi<=vecy[j].yi&&vecx[start].yi>=vecy[i].yi){
            62                             int lenx=abs(vecx[end].xi-vecx[start].xi)+2;
            63                             int leny=abs(vecy[i].yi-vecy[j].yi)+2;
            64                             if(lenx*leny<ans)ans=lenx*leny;
            65                         }
            66                         if(vecx[start].yi<=vecy[j].yi&&vecx[start].yi>=vecy[i].yi)cnt--;
            67                         start++;
            68                     }
            69                 }
            70             }
            71         }
            72         printf("%d\n",ans);            //start++
            73     }
            74     return 0;
            75 }
            實力不夠...繼續努力...
            posted @ 2008-07-28 17:43 小果子 閱讀(261) | 評論 (0)編輯 收藏
            http://acm.pku.edu.cn/JudgeOnline/problem?id=3670
             1 #include <iostream>
             2 #include <vector>
             3 
             4 using namespace std;
             5 const int N=30005;
             6 int dp1[N];
             7 int dp2[N];
             8 int dp3[N];
             9 int d1[N];
            10 int d2[N];
            11 int main()
            12 {
            13     int n;
            14     while(cin>>n){
            15         int num;
            16         memset(dp1,0,sizeof(dp1));
            17         memset(dp2,0,sizeof(dp2));
            18         memset(dp3,0,sizeof(dp3));
            19         for(int i=0;i<n;i++){
            20             cin>>d1[i];
            21             d2[n-i-1]=d1[i];
            22         }
            23         switch(d1[0]){
            24             case 1:
            25                 dp1[0]=0,dp2[0]=1,dp3[0]=1;
            26                 break;
            27             case 2:
            28                 dp1[0]=1,dp2[0]=0,dp3[0]=1;
            29                 break;
            30             case 3:
            31                 dp1[0]=1,dp2[0]=1,dp3[0]=0;
            32                 break;
            33         }
            34 
            35         for(int i=1;i<n;i++){
            36             switch(d1[i]){
            37                 case 1:
            38                     dp1[i]=dp1[i-1];
            39                     dp2[i]=min(dp1[i-1],dp2[i-1])+1;
            40                     dp3[i]=min(dp1[i-1],min(dp2[i-1],dp3[i-1]))+1;
            41                     break;
            42                 case 2:
            43                     dp1[i]=dp1[i-1]+1;
            44                     dp2[i]=min(dp1[i-1],dp2[i-1]);
            45                     dp3[i]=min(dp1[i-1],min(dp2[i-1],dp3[i-1]))+1;
            46                     break;
            47                 case 3:
            48                     dp1[i]=dp1[i-1]+1;
            49                     dp2[i]=min(dp1[i-1],dp2[i-1])+1;
            50                     dp3[i]=min(dp1[i-1],min(dp2[i-1],dp3[i-1]));
            51                     break;
            52             }
            53         }
            54         int ans=0x7fffffff;
            55         if(ans>dp1[n-1])ans=dp1[n-1];
            56         if(ans>dp2[n-1])ans=dp2[n-1];
            57         if(ans>dp3[n-1])ans=dp3[n-1];
            58 
            59         switch(d2[0]){
            60             case 1:
            61                 dp1[0]=0,dp2[0]=1,dp3[0]=1;
            62                 break;
            63             case 2:
            64                 dp1[0]=1,dp2[0]=0,dp3[0]=1;
            65                 break;
            66             case 3:
            67                 dp1[0]=1,dp2[0]=1,dp3[0]=0;
            68                 break;
            69         }
            70 
            71         for(int i=1;i<n;i++){
            72             switch(d2[i]){
            73                 case 1:
            74                     dp1[i]=dp1[i-1];
            75                     dp2[i]=min(dp1[i-1],dp2[i-1])+1;
            76                     dp3[i]=min(dp1[i-1],min(dp2[i-1],dp3[i-1]))+1;
            77                     break;
            78                 case 2:
            79                     dp1[i]=dp1[i-1]+1;
            80                     dp2[i]=min(dp1[i-1],dp2[i-1]);
            81                     dp3[i]=min(dp1[i-1],min(dp2[i-1],dp3[i-1]))+1;
            82                     break;
            83                 case 3:
            84                     dp1[i]=dp1[i-1]+1;
            85                     dp2[i]=min(dp1[i-1],dp2[i-1])+1;
            86                     dp3[i]=min(dp1[i-1],min(dp2[i-1],dp3[i-1]));
            87                     break;
            88             }
            89         }
            90 
            91         if(ans>dp1[n-1])ans=dp1[n-1];
            92         if(ans>dp2[n-1])ans=dp2[n-1];
            93         if(ans>dp3[n-1])ans=dp3[n-1];
            94 
            95         cout<<ans<<endl;
            96     }
            97     return 0;
            98 }
            99 
            posted @ 2008-07-25 15:27 小果子 閱讀(216) | 評論 (0)編輯 收藏
            僅列出標題
            共58頁: First 48 49 50 51 52 53 54 55 56 Last 
            99久久综合狠狠综合久久止| 久久综合鬼色88久久精品综合自在自线噜噜 | 狠狠色综合网站久久久久久久| 999久久久无码国产精品| www久久久天天com| 久久久久国产一区二区| 亚洲人成无码网站久久99热国产| 伊人久久大香线蕉av不变影院| 久久久久亚洲AV片无码下载蜜桃| 日本精品久久久久中文字幕| 久久久精品日本一区二区三区| 国产香蕉久久精品综合网| 久久久久久久久无码精品亚洲日韩| 99久久99久久精品国产| 久久水蜜桃亚洲av无码精品麻豆| AAA级久久久精品无码区| 久久久久av无码免费网| 免费观看成人久久网免费观看| 一本一道久久a久久精品综合| 国产婷婷成人久久Av免费高清| 久久久久久青草大香综合精品 | 999久久久无码国产精品| 日本精品一区二区久久久| 久久亚洲AV成人出白浆无码国产| 久久亚洲电影| 久久99精品九九九久久婷婷| 久久久久久久久久久久中文字幕| 人妻无码精品久久亚瑟影视 | 中文成人久久久久影院免费观看| 国产精品一区二区久久国产| 综合网日日天干夜夜久久| 亚洲国产成人精品女人久久久| 51久久夜色精品国产| 久久777国产线看观看精品| 亚洲欧美伊人久久综合一区二区 | 最新久久免费视频| 久久久久国产一级毛片高清板| 久久久久亚洲?V成人无码| 久久久精品人妻无码专区不卡 | 青青久久精品国产免费看| 激情久久久久久久久久|