• <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 小果子 閱讀(260) | 評論 (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 
            久久996热精品xxxx| 人妻中文久久久久| 久久久WWW成人免费精品| 久久久国产精品网站| 国内精品九九久久久精品| 国产产无码乱码精品久久鸭 | 久久精品不卡| 日韩久久无码免费毛片软件 | 日韩欧美亚洲综合久久影院d3| 亚洲狠狠久久综合一区77777| 久久久久久噜噜精品免费直播| 国产成人久久精品一区二区三区| 思思久久精品在热线热| 精品无码久久久久国产| 精品久久久久久99人妻| 久久人妻AV中文字幕| 94久久国产乱子伦精品免费| 久久综合九色综合久99| 亚洲国产精品无码久久一区二区 | 青青草国产97免久久费观看| 久久九九兔免费精品6| 久久久久免费精品国产| 超级碰碰碰碰97久久久久| 久久er热视频在这里精品| 超级97碰碰碰碰久久久久最新| 99久久99久久精品国产片果冻| 久久免费的精品国产V∧ | 国产成人精品综合久久久| 亚洲国产精品成人久久| 久久一区二区免费播放| 99久久99久久精品国产片果冻| 久久精品国产清高在天天线| 久久婷婷五月综合国产尤物app| 久久精品国产一区二区三区不卡| 久久99精品国产99久久6男男| 久久久久人妻一区精品性色av| 久久国产劲爆AV内射—百度| 国内精品久久久久影院亚洲| 欧美日韩精品久久久免费观看| 久久伊人五月天论坛| 久久性精品|