• <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>

            The Fourth Dimension Space

            枯葉北風寒,忽然年以殘,念往昔,語默心酸。二十光陰無一物,韶光賤,寐難安; 不畏形影單,道途阻且慢,哪曲折,如渡飛湍。斬浪劈波酬壯志,同把酒,共言歡! -如夢令

            #

            POJ 3239 n皇后問題可行解的構造

            //一、當n mod 6 != 2 且 n mod 6 != 3時,有一個解為:

            //

            //2,4,6,8,...,n,1,3,5,7,...,n-1       (n為偶數)

            //

            //2,4,6,8,...,n-1,1,3,5,7,...,n       (n為奇數)

            //

            //(上面序列第i個數為ai,表示在第i行ai列放一個皇后;... 省略的序列中,相鄰兩數以2遞增。下同)

            //

            //二、當n mod 6 == 2 或 n mod 6 == 3時,

            //

            //(當n為偶數,k=n/2;當n為奇數,k=(n-1)/2)

            //

            //k,k+2,k+4,...,n,2,4,...,k-2,k+3,k+5,...,n-1,1,3,5,...,k+1         (k為偶數,n為偶數)

            //

            //k,k+2,k+4,...,n-1,2,4,...,k-2,k+3,k+5,...,n-2,1,3,5,...,k+1,n       (k為偶數,n為奇數)

            //

            //k,k+2,k+4,...,n-1,1,3,5,...,k-2,k+3,...,n,2,4,...,k+1               (k為奇數,n為偶數)

            //

            //k,k+2,k+4,...,n-2,1,3,5,...,k-2,k+3,...,n-1,2,4,...,k+1,n           (k為奇數,n為奇數)

             

            posted @ 2010-04-15 11:46 abilitytao 閱讀(873) | 評論 (1)編輯 收藏

            PKU 2756 java....

            好久沒復習java了,居然忘了怎么輸入string.囧。。。

            import java.math.*;
            import java.io.*;
            import java.util.*;


            public class Main {
                
            public static void main(String[] args) {
                   Scanner cin 
            = new Scanner (new BufferedInputStream(System.in));
             
                   String s
            =new String("0");
                   
            int t;
                   t
            =cin.nextInt();
                   
            int i;
                   
            for(i=1;i<=t;i++)
                   
            {
                       s
            =cin.next();
                       
            if(s.charAt(0)=='+')
                          s
            =s.substring(1);
                       BigInteger a
            =new BigInteger(s);
                       s
            =cin.next();
                       
            if(s.charAt(0)=='+')
                          s
            =s.substring(1);
                       BigInteger b
            =new BigInteger(s);
                       a
            =a.add(b);
                       System.out.println(a);
                   }

                }

            }

            posted @ 2010-04-14 19:32 abilitytao 閱讀(363) | 評論 (0)編輯 收藏

            POJ 2886 Who Gets the Most Candies? 線段樹,在環中求第k個空閑的位置

                 摘要: 很高興在完全沒有參考任何代碼的前提下通過此題,呵呵,就是代碼比較猥瑣,跑得也比較慢,2700MS,超過時限的一半了。此題應該還有繼續提升的空間,我想了想,insert函數和query其實是可以放在一起的。另外網上的方法用了反素數 這樣可以減少插入的次數,應該也能剪去一下時間。下次試試。^_^順便用此題做為POJ 500題紀念 #include<iostream>using ...  閱讀全文

            posted @ 2010-04-14 00:41 abilitytao 閱讀(1428) | 評論 (0)編輯 收藏

            POJ 1095 卡特蘭數+dfs

            感覺和上次codeforce的第四題有點像,雖然沒做出來,呵呵。
            看來枚舉左右子樹這一招還是蠻常用的。其實我本來想練下卡特蘭數的,結果變成練DFS了。
            注意遞歸求解左右孩子時的那兩個參數,一定要先加上1,否則就不對了。

            #include<stdio.h>
            long long a[20];  
            long long b[20]; 
            //定理:n個結點能形成的二叉樹總數為 卡特蘭數 C(2n,n)/(n+1) 或者由遞推公式Ci+1=2*(2*i+1)/(i+2)*Ci 
            //設計figure(n),n代表這棵樹整體的偏移量
            //分別算出其左右子樹各自的偏移量,遞歸求解即可
            //由于先遞歸左兒子,輸出順序與題意相符
            void figure(int n) 
            {       
                
            int t,i,j;  
                
            if(n==1){printf("X");return;}     
                j
            =0;
                
            while(trueif(b[++j]>=n) break;         
                n
            =n-b[j-1];//j代表有幾個結點,n此時代表在這些結點下的序號    
                for(i=0;i<j;i++)   
                
            {          
                    t
            =a[i]*a[j-1-i];    
                    
            if(t>=n)  break;           
                    
            else n=n-t;   
                }
                 
                
            if(i!=0)    //i是此時左子樹掛的節點數
                {        
                    printf(
            "(");  
                    figure(b[i
            -1]+1+(n-1)/a[j-1-i]);//初始的時刻,只需要增加1,左子樹的偏移量就增加1,而之后的部分,需要右子樹變換a[j-i-1]次,左子樹的偏移量才增加1  
                    printf(")");
                }
                
                printf(
            "X");  
                
            if(i!=j-1)    
                
            {        
                    printf(
            "(");  
                    figure(b[j
            -2-i]+1+(n-1)%a[j-1-i]);   
                    printf(
            ")");   
                }
               
            }
                    
            int main()  
            {      
                
            int n;   
                
            int i,j;     
                a[
            0]=1;     
                a[
            1]=1;       
                b[
            1]=1;     
                b[
            0]=0;     
                
            for(i=2;i<20;i++
                
            {        
                    a[i]
            =2*(2*(i-1)+1)*a[i-1]/(i+1) ;//卡特蘭數遞推公式
                    b[i]=b[i-1]+a[i];   
                }
                
                
            while(scanf("%d",&n)&&n)   
                
            {      
                    solve(n);   
                    printf(
            "\n");   
                }
                   
                
            return 0;  
            }
              

            posted @ 2010-04-13 17:33 abilitytao 閱讀(2142) | 評論 (5)編輯 收藏

            Catalan Number 卡特蘭數

            關于擴展的卡特蘭數:
            1.(n-m+1)/(n+1)*c(n+m,n)
            2.c[n+m][n]-c[n+m][m-1]



            Catalan,Eugene,Charles,卡特蘭(1814~1894)比利時數學家,生于布魯日(Brugge),早年在巴黎綜合工科學校就讀。1856年任列日(Liege)大學數學教授,并被選為比利時布魯塞爾科學院院士。

            卡特蘭一生共發表200多種數學各領域的論著。在微分幾何中,他證明了下述所謂的卡特蘭定理:當一個直紋曲線是平面和一般的螺旋面時,他只能是實的極小曲面。他還和雅可比(Jacobi,C·G·J)同時解決了多重積分的變量替換問題,建立了有關的公式。

            1842年,他提出了一種猜想:方程xz-yt=1沒有大于1的正整數解,除非平凡情形32-23=1。這一問題至今尚未解決。

            (mathoe注:即除了8、9這兩個連續正整數都是正整數的方冪外,沒有其他。1962年我國數學家柯召以極其精湛的方法證明了不存在三個連續正整數,它們都是正整數的方冪,以及方程x2-yn=1,n>1,xy≠0無正整數解。并且還證明了如果卡特蘭猜想不成立,其最小的反例也得大于1016。)

            此外,卡特蘭還在函數論、伯努利數和其他領域也做出了一定的貢獻。

            卡特蘭通過解決凸n邊形的剖分得到了數列Cn

            凸n+2邊形用其n-1條對角線把此凸n+2邊形分割為互不重疊的三角形,這種分法的總數為Cn

            為紀念卡特蘭,人們使用“卡特蘭數”來命名這一數列。

            據說有幾十種看上去毫不相干的組合計數問題的最終表達式都是卡特蘭數的形式。

            卡特蘭數在數學競賽、信息學競賽、組合數學、計算機編程等都會有其不同側面的介紹。

            前幾個卡特蘭數:規定C0=1,而

            C1=1,C2=2,C3=5,C4=14,C5=42,

            C6=132,C7=429,C8=1430,C9=4862,C10=16796,

            C11=58786,C12=208012,C13=742900,C14=2674440,C15=9694845。

            遞推公式


            圓周上有標號為1,2,3,4,……,2n的共計2n個點,這2n個點配對可連成n條弦,且這些弦兩兩不相交的方式數為卡特蘭數Cn

            2003年浙江省小學數學夏令營競賽考了這個題:圓周上10個點可以連成既不相交,也沒有公共端點的5條線段,不同的連法共有_____種。

            答:方法的種數是卡特蘭數C5=42,此題被收錄進單墫主編的知識出版社出版的《華數奧賽強化訓練》小學六年級冊的“計數問題”專題。


            共六種類型,第1類有5種連法,第2類有2種連法,第3類有10種連法,第4類有10種連法,第5類有10種連法,第6類有5種連法。共有42種連法。


            1994年《小學數學》有獎征答競賽:游樂園門票1元一張,每人限購一張。現在有10個小朋友排隊購票,其中5個小朋友每人只有1元的鈔票一張,另5個小朋友每人只有2元的鈔票一張,售票員沒有準備零錢。問:有多少種排隊方法,使售票員總能找的開零錢?

            (此題也被許多奧數資料收錄為例題或習題,《華羅庚學校數學課本》小學六年級冊的思維訓練也收有此題)

            答:現把拿1元的5個小朋友看成是相同的,把拿2元的5個小朋友也看成是相同的,使用我們常用的“逐點累加法”:

            圖中每條小橫段表示拿1元的小朋友,每條小豎段表示拿2元的小朋友,要求從A走到B的過程中網格中任何點均有橫段數不小于豎段數:拿1元的要先,且人數不能少于拿2元的,即不能越過對角線AB:每個點所標的數即為從A走到此點的方法數。求從A到B的走法的方法數。逐點累加可求出為42,即卡特蘭數C5=42。



            又由于每個小朋友是不相同的,所以共有42×5!×5!=42×120×120=604800種情況。

            若把此題的10個人,拿1元的有5人,拿2元的有5人改為共有2n個人,拿1元的n人,拿2元的n人,則符合要求的排隊方法數為:






            再一個卡特蘭數的例子:

            甲乙兩人比賽乒乓球,最后結果為20∶20,問比賽過程中甲始終領先乙的計分情形的種數。

            即甲在得到1分到19分的過程中始終領先乙,其種數是卡特蘭數






            再一個卡特蘭數的例子

            飯后,姐姐洗碗,妹妹把姐姐洗過的碗一個一個放進碗櫥摞成一摞。一共有n個不同的碗,洗前也是摞成一摞的,也許因為小妹貪玩而使碗拿進碗櫥不及時,姐姐則把洗過的碗摞在旁邊,問:小妹摞起的碗有多少種可能的方式?

            答:得數是第n個卡特蘭數Cn

            再一個卡特蘭數的例子

            一個汽車隊在狹窄的路面上行駛,不得超車,但可以進入一個死胡同去加油,然后再插隊行駛,共有n輛汽車,問共有多少種不同的方式使得車隊開出城去?

            答:得數是第n個卡特蘭數Cn

            卡特蘭數

            求證:卡特蘭數Cn是整數。

            證明:

            ①取整函數不等式:對任意實數x,y有[x+y]≥[x]+[y]。這里[x]表示不大于實數x的最大整數。

            解:由定義x≥[x]……(1)

                             y≥[y]……(2)以上兩式相加,得:x+y≥[x]+[y],

                   把上式再取整,得:[x+y]≥[[x]+[y]]=[x]+[y],即[x+y]≥[x]+[y]。

            ②1000!的末尾0的個數249個。(現在有的小學奧數書上出現了100!末尾有幾個零的題目:24個)

            解:1000÷5=200,

                    200÷5=40,

                    40÷5=8,

                    8÷5=1……3

                   以上各商相加,即得1000!末尾0的個數=200+40+8+1=249個。

            ③n!的質因數分解式中質因子p的冪次數:


            …………(1)

            k!的質因數分解式中質因子p的冪次數

            …………(2)

            (n-k)!的質因數分解式中質因子p的冪次數


            …………(3)

            這里寫成西格馬求和式時使用了無窮的形式,但是從某一確定項之后的每項都是0,為了統一,都寫成了“∞”形式。

            ④組合數是整數

            解:

            ⑤卡特蘭數是整數

            ⑥卡特蘭數是整數的另外一個證明

            ④組合數是整數




            ⑤卡特蘭數是整數



            ⑥卡特蘭數是整數的另一個證明





            凸六邊形剖分成三角形的14種方法,是卡特蘭數C4







            從左下角(0,0)走到右上角(4,4),只允許向上、向右走,但不允許穿過對角線的方法數是14種,是卡特蘭數C4



            1936第40屆匈牙利奧林匹克數學競賽 第1題考了Catalan恒等式的證明。





            1979第21屆國際數學奧林匹克 第1題考了一個卡特蘭恒等式的應用的題目






            此題由1989年第1屆匈牙利-以色列數學競賽題改編。



            轉自:http://www.mathoe.com/dispbbs.asp?boardid=89&replyid=46004&id=34522&page=1&skin=0&Star=2

            posted @ 2010-04-12 21:15 abilitytao 閱讀(1984) | 評論 (0)編輯 收藏

            卡特蘭數 的幾個應用

             

            問題

            《編程之美》中提到了“買票找零”問題,查閱了下資料,此問題和卡特蘭數 Cn有關,其定義如下:

            image

            卡特蘭數真是一個神奇的數字,很多組合問題的數量都和它有關系,例如:

            一.Cn= 長度為 2n的 Dyck words的數量。 Dyck words是由 n個 X和 n個 Y組成的字符串,并且從左往右數, Y的數量不超過 X,例如長度為 6的 Dyck words為:

            XXXYYY XYXXYY XYXYXY XXYYXY XXYXYY

            二.Cn= n對括號正確匹配組成的字符串數,例如 3對括號能夠組成:

            ((())) ()(()) ()()() (())() (()())

            三.Cn= n+1個數相乘,所有的括號方案數。例如, 4個數相乘的括號方案為:

             
            ((ab)c)d (a(bc))d (ab)(cd) a((bc)d) a(b(cd))

            \四.Cn= 擁有 n+1 個葉子節點的二叉樹的數量。例如 4個葉子節點的所有二叉樹形態:

            Catalan number binary tree example.png

            五.Cn=n*n的方格地圖中,從一個角到另外一個角,不跨越對角線的路徑數,例如, 4×4方格地圖中的路徑有:

            Catalan number 4x4 grid example.svg

            六.Cn= n+2條邊的多邊形,能被分割成三角形的方案數,例如 6邊型的分割方案有:

            Catalan-Hexagons-example.svg

            七.Cn= 圓桌周圍有 2n個人,他們兩兩握手,但沒有交叉的方案數。

            在《Enumerative Combinatorics》一書中,竟然提到了多達 66種組合問題和卡特蘭數有關。

            posted @ 2010-04-12 20:34 abilitytao 閱讀(1171) | 評論 (0)編輯 收藏

            Coderforce ,the first time

                 摘要: A 就是分數化簡注意一下就好,gcdB.暴力,1個trick , 當時間相同時要求的是 到學校距離最小的那個站 #include<iostream>#include<cmath>using namespace std;struct point{    double x;  ...  閱讀全文

            posted @ 2010-04-12 00:46 abilitytao 閱讀(1293) | 評論 (0)編輯 收藏

            一個維普數據庫的入口和賬號

            http://123.234.230.71:8008/index1.asp
            賬號 cy
            密碼 cy

            posted @ 2010-04-12 00:30 abilitytao 閱讀(161) | 評論 (0)編輯 收藏

            浙大校賽 B題 暴力覆蓋

                 摘要: 之前想進行hash,發現思路非常麻煩。索性來個一一對應,找到第一個M后,掃描所有52個字母,一個字母正反各算一次,找準基準點后,用一張7*16的圖進行覆蓋,整張圖要完全一一對應。 為了避免附近字母的干擾,先做一遍深搜,只對深搜搜過的點進行對應,其他的不管。 #include<iostream>using namespace std;char s[26][...  閱讀全文

            posted @ 2010-04-10 22:44 abilitytao 閱讀(1390) | 評論 (0)編輯 收藏

            浙大校賽 I 用了并查集

            題意嚴重不明,開始還以為是頂點按順序形成環,WA了N次之后改了算法才過的。。。

            #include<iostream>
            #include
            <algorithm>
            #include
            <cstdio>
            using namespace std;


            int n,m;
            int v[100][100];
            int d[100];

            int f[1000];
            int r[1000];
            int find(int n)
            {
                
            if(f[n]==n)
                    
            return n;
                
            else
                    f[n]
            =find(f[n]);
                
            return f[n];
            }



            int Union(int x,int y)
            {
                
            int a=find(x);
                
            int b=find(y);
                
            if(a==b)
                    
            return 0;
                
            else if(r[a]<=r[b])
                
            {
                    f[a]
            =b;
                    r[b]
            +=r[a];
                }

                
            else
                
            {
                    f[b]
            =a;
                    r[a]
            +=r[b];
                }

                
            return 1;

            }


            int main()
            {

                
            while(scanf("%d%d",&n,&m)!=EOF)
                
            {

                    
            int flag=0;
                    memset(d,
            0,sizeof(d));
                    
            int i,j;
                    
            for(i=0;i<n;i++)
                    
            {

                        f[i]
            =i;
                        r[i]
            =1;
                    }

                    
            for(i=1;i<=m;i++)
                    
            {
                        
            int a,b;
                        scanf(
            "%d%d",&a,&b);
                        Union(a,b);
                        d[a]
            ++;
                        d[b]
            ++;
                    }

                    
            int tt=find(1);
                    
            if(r[tt]!=n)
                    
            {

                        printf(
            "NO\n");
                        
            continue;
                    }


                    
            if(n!=m||n<3)
                    
            {
                        printf(
            "NO\n");
                        
            continue;
                    }

                    
            for(i=1;i<=n;i++)
                    
            {

                        
            if(d[i]!=2)
                        
            {
                            flag
            =1;
                            
            break;
                        }

                    }

                    
            if(flag)
                        printf(
            "NO\n");
                    
            else
                        printf(
            "YES\n");

                }

                
            return 0;
            }

            posted @ 2010-04-10 18:14 abilitytao 閱讀(1033) | 評論 (0)編輯 收藏

            僅列出標題
            共42頁: First 14 15 16 17 18 19 20 21 22 Last 
            蜜臀久久99精品久久久久久小说| 国产亚洲美女精品久久久| 久久se精品一区精品二区国产| 久久国产免费观看精品3| 久久精品国产免费观看三人同眠| 伊人久久大香线蕉综合热线| 久久久久久国产a免费观看不卡| 久久精品亚洲乱码伦伦中文| 99久久无码一区人妻| 久久精品国产黑森林| 久久夜色精品国产噜噜亚洲a | 久久婷婷五月综合成人D啪| 一本久久a久久精品综合香蕉| 久久精品国产一区二区电影| 欧美性大战久久久久久| 日韩久久久久中文字幕人妻| 大香伊人久久精品一区二区| 亚洲国产精品无码久久SM| 久久精品亚洲一区二区三区浴池 | 国产成人久久777777| 91精品国产91热久久久久福利| 青青青国产成人久久111网站| 国内精品久久久久久久coent| 久久中文字幕视频、最近更新 | 午夜精品久久久久成人| 综合久久国产九一剧情麻豆| 国产Av激情久久无码天堂| 久久久WWW成人免费毛片| 亚洲精品无码久久久久| 国产成人综合久久久久久| 久久乐国产综合亚洲精品| 99久久免费国产精品热| 中文字幕无码久久人妻| 99麻豆久久久国产精品免费| 久久久久亚洲av成人无码电影| 欧美一区二区三区久久综合| 免费国产99久久久香蕉| 99蜜桃臀久久久欧美精品网站| 91精品国产91久久久久久蜜臀| 久久综合给合久久国产免费| 日韩一区二区三区视频久久|