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

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

            #

            周末要做的幾件事

            1。完成曹雪的語法分析器
            2。完成葉慶生的項目
            3。有道難題的資格賽 (周六晚)
            4。復習和總結動態規劃專題(包括那個自學的內容)

            posted @ 2010-05-27 10:51 abilitytao 閱讀(251) | 評論 (0)編輯 收藏

            Master of Science - Robotics Technology Program

            The MS-RT professional masters degree program trains future leaders of robotics and intelligent automation enterprises and agencies in the principles and practices of robotics and automation science and engineering, software engineering, and management. The program is appropriate for students with backgrounds in an engineering or science discipline and practical abilities in computer systems and software engineering. Classroom training is reinforced by an extensive supervised practicum designed to expose the students to research laboratory and industrial environments. They will thus acquire - and be expected to demonstrate - individual and group competence in the skills and practices that will be needed to support the entrepreneurial teams they will lead upon their return to their home countries.

            The two-year program is composed of two one-year phases. First year studies are at an international partner institution's campus via distance education materials produced by the Robotics Institute and delivered by the partner's faculty. Successful students transition to Carnegie Mellon's main campus to complete a second year of classes and an extensive practicum. Graduates are eligible to pursue additional practical training in the US before returning to their home countries.

            Preferably the additional training will be an internship with a company in the US that, afterwards, will employ the student at a division in his or her home country. The program's intention is for graduates to return home to entrepreneurial activities that will contribute to sustainable development there.

          1. Historical Note: In 2005 some graduates of this program received Master of Science in Information Technology - Robotics Technology (MSIT-RT) degrees and others received MSIT degrees. In 2006 and 2007 all graduates received MSIT-RT degrees. Subsequently the program name was changed to Master of Science - Robotics Technology (MS-RT) to better reflect its actual content. For additional simplicity, all graduates are listed here as having received MS-RT degrees.
          2. Additional information

            posted @ 2010-05-24 13:40 abilitytao 閱讀(277) | 評論 (0)編輯 收藏

            湘潭市程序設計比賽 I robot,bfs

                 摘要: 這題出得不錯,在傳統的bfs上加了點改進,好題~ #include<iostream>#include<cmath>using namespace std;int const maxn=110;int mm[maxn][maxn];int v[maxn][maxn][4];//0上,1右,2下,3左struct&...  閱讀全文

            posted @ 2010-05-22 22:05 abilitytao 閱讀(1620) | 評論 (0)編輯 收藏

            POJ 2447 破解RSA(經典公鑰算法)

            周五剛好在俞研的網絡安全課上學了RSA,回來想實現以下,由于以前數論方面的積累還算比較深厚,很快就過了這一題,呵呵:-)
            總結一下吧,這題可以說是數論部分的一個大綜合題,因為它將算法導論上數論這部分的知識點全部包含了進來,包括gcd,擴展gcd,模線性方程,a^b mod c(還是比較難的那種,相關題目可以看一下FOZ上面的2道題),miller-rabin素數測試,pollard_rho質因數分解等等,把這題搞定了說明你對算法導論的數論部分已經可以做到熟練掌握了,相當于<算法導論>數論部分的期末測試,呵呵^_^。
            下面簡要的說一下這題的做法,首先簡要介紹一下RSA算法加密解密的過程:
            我們首先生成兩個大的素數P,Q,乘起來得N=P*Q.然后算出N的歐拉函數Phi(N)=(P-1)*(Q-1).(什么是歐拉函數?這個世界上有一種東西叫做百度...),然后我們取一個范圍在[1,phi(N)]中且與phi(N)互質的正整數E.它就是所謂的公鑰。得到公鑰之后,我們再算出E關于phi(N)的逆元D,即E*D mod phi(N)=1.這個D就是私鑰。在得到這些數據以后,P,Q被丟棄,E,N做為公鑰被公開,D做為私鑰被解密人私人保存。

            好了,下面看一下如何用公鑰和私鑰對數據進行加密解密。
            假設有一個明文M,那么它所對應的密文就是C=M^E mod N.
            如果我們現在得到一個密文C,那么它所對應的明文就是M=C^D mod N
            也就是說,任何人都可以用公鑰對數據進行加密,但是只有擁有私鑰的人才可以對數據進行解密。

            那么RSA算法為什么不易被破解呢?從解密的過程來看如果你能夠知道D那么你就能解密數據。而E,D是逆元關系,要求出D,需要知道phi(N),由于N非常之大,普通的做法是從1開始枚舉到N-1,計算和N互質的元素個數??墒荖可以是幾百位到上千位的數字,普通的計算機只能在1s內算到10^8量級,顯然是不可能破解的。唯一有可能的方法基于大素數分解,如果你能將N分解成P*Q的乘積。那么就可以直接利用公式phi(N)=(P-1)*(Q-1)繞開暴力求解歐拉函數的過程,從而實現RSA的破解。

            這道題就是模擬這個破解過程,下面來說說具體的做法:
            1.首先用miller-rabin,pollard_rho做大整數的質因數分解,得到兩個素數P,Q,pollard_rho的復雜度在N^0.25次方,那么一個64位的整數 要計算的次數為 2^64^0.25=2^16 =65536次,可以瞬間出解。
            2.求出phi(N)=(P-1)*(Q-1)
            3.然后用ext_gcd求出E關于phi(N)的逆元。
            4.用得到的私鑰對數據C進行解密即可。

            PS:對這題而言,僅僅完成上述步驟還是不夠的。因為N達到2^62次方,即使是使用無符號long long ,也很容易因為出乘法操作而溢出。這也是網上說要避免使用擴展歐幾里德的原因。其實實現的時候,我們可以自己寫一個特殊的乘法(內部用加法實現),由于使用的無符號的long long ,第64位剛好可以用來保存兩個數加過之后的進位位,再模除又可以保證其在2^62范圍內,即可避免溢出。

            posted @ 2010-05-22 14:39 abilitytao 閱讀(3075) | 評論 (0)編輯 收藏

            ZOJ 2105 矩陣乘法(求線性常系數差分方程第N項)

            DIY群上說可以用暴力循環節的方法來做,的確也是不錯的,不過練題的本質在于學到新的東西,所以就用矩陣乘法敲了,恩 感覺收獲還是蠻大的,掌握了和矩陣相關的很多運算。
            #include<iostream>
            #include
            <algorithm>
            using namespace std;

            struct matrix
            {
                
            int n,m;
                
            int a[2][2];
                matrix 
            operator *(matrix other)
                
            {
                    
            int i,j;
                    matrix res;
                    res.n
            =n;
                    res.m
            =other.m;
                    
            for(i=0;i<n;i++)
                        
            for(j=0;j<m;j++)
                        
            {
                            res.a[i][j]
            =0;
                            
            for(int k=0;k<m;k++)
                            
            {
                                res.a[i][j]
            +=a[i][k]*other.a[k][j];
                                
            if(res.a[i][j]>=7)
                                    res.a[i][j]
            %=7;
                            }

                        }

                    
            return res;
                }


                matrix 
            operator +(matrix other)
                
            {
                    matrix res;
                    
            for(int i=0;i<n;i++)
                        
            for(int j=0;j<m;j++)
                        
            {

                            res.a[i][j]
            =a[i][j]+other.a[i][j];
                            
            if(res.a[i][j]>=7)
                                res.a[i][j]
            %=7;
                        }

                    
            return res;

                }

            }
            ;

            matrix a;
            matrix ans;
            int A,B,n;
            matrix g(
            int k)//算A^k
            {
                matrix t;
                
            if(k==1)
                    
            return a;
                
            if(k&1)
                
            {
                    t
            =g(k>>1);
                    t
            =t*t;
                    t
            =t*a;
                }

                
            else
                
            {
                    t
            =g(k>>1);
                    t
            =t*t;
                }

                
            return t;
            }


            void init()
            {
                a.n
            =2;a.m=2;
                a.a[
            0][0]=0;
                a.a[
            0][1]=1;
                a.a[
            1][0]=B;
                a.a[
            1][1]=A;
                
            //////////////////////////////////////////////////////////////////////////
                ans.n=2;
                ans.m
            =1;
                ans.a[
            0][0]=1;
                ans.a[
            1][0]=1;
            }



            int main()
            {
                
            int i,j;
                
                

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

                    
            if(A==0&&B==0&&n==0)
                        
            break;
                    
            if(n==1||n==2)
                    
            {
                        printf(
            "1\n");
                        
            continue;
                    }

                    init();
                    a
            =g(n-2);
                    ans
            =a*ans;
                    printf(
            "%d\n",ans.a[1][0]);
                }

                
            return 0;
            }

            posted @ 2010-05-21 22:31 abilitytao 閱讀(1431) | 評論 (0)編輯 收藏

            TC SRM 470

                 摘要: 做完心情不太好,1000分的水題居然因為自己開小了數組而掛掉。算了,不解釋。250 #include<iostream>#include<algorithm>#include<cstdio>#include<string>#include<vector>using namespace std;struct ...  閱讀全文

            posted @ 2010-05-21 01:22 abilitytao 閱讀(1200) | 評論 (0)編輯 收藏

            HDOJ 1007 Quoit Design 平面最近點對

            剛好課上學了平面最近點對的算法,回來實現以下,恩 ,分治的思想很重要。呵呵,又學會了一個算法。

            #include<iostream>
            #include
            <cstdio>
            #include
            <cmath>
            #include
            <algorithm>
            using namespace std;
            #define eps 1e-8

            const int maxn=200001;
            const double INF=999999999;

            typedef 
            struct point
            {
                
            double x,y;
                
            //int flag;
                point(){};  
            }
            point;
            point p[maxn];
            int n; 
            int cmp(double x,double y)
            {
                
            if(x==y)return 0;
                
            if(x>y)return 1;
                
            return -1
            }
                   

            bool cmp1(point a,point b)
            {
                
            if(a.x!=b.x)
                    
            return a.x<b.x;
                
            else
                    
            return a.y<b.y;
            }

            bool cmp2(int i,int j)
            {
                
            return cmp(p[i].y,p[j].y)<0;
            }

            double dist(point &a,point &b)
            {
                
            return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
            }



            int y[maxn],len;
            double cp(point p[],int l,int r)//求從l到r這些點的最近點對
            {
                
            int i,j;
                
            int mid=(l+r)>>1;
                
            double ret=INF;
                
            if(l>=r)
                    
            return ret;
                
            for(i=mid;i>=l&&!cmp(p[i].x,p[mid].x);i--);
                
            double t1=cp(p,l,i);
                
            for(i=mid;i<=r&&!cmp(p[i].x,p[mid].x);i++);
                
            double t2=cp(p,i,r);
                
            if(t1<t2)
                    ret
            =t1;
                
            else ret=t2;

                len
            =0;
                
            for(i=l;i<=r;i++)
                
            {
                    
            if(fabs(p[i].x-p[mid].x)<ret)
                        y[
            ++len]=i;
                }


                sort(y
            +1,y+len+1,cmp2);

                
            for(i=1;i<=len;i++)
                
            {
                    
            int cnt=1;
                    
            for(j=i+1;j<=len&&cnt<=7;j++)
                    
            {
                        ret
            =min(ret,dist(p[y[i]],p[y[j]])); 
                        cnt
            ++;
                    }

                }

                
            return ret;
            }


            bool check(int n)
            {
                
            int i;
                
            for(i=2;i<=n;i++)
                
            {
                    
            if(p[i].x==p[i-1].x&&p[i].y==p[i-1].y)
                        
            return true;
                }

                
            return false;
            }




            int main()
            {

                
            int n;
                
            while(scanf("%d",&n)!=EOF)
                
            {    
                    
            if(n==0)
                        
            break;

                    
            int i;
                    
            for(i=1;i<=n;i++)
                        scanf(
            "%lf%lf",&p[i].x,&p[i].y);
                    sort(p
            +1,p+n+1,cmp1);
                    
            if(check(n))
                    
            {
                        printf(
            "0.00\n");
                        
            continue;
                    }

                    
            double ans=cp(p,1,n)/2;
                    printf(
            "%.2lf\n",ans);

                }

                
            return 0;    

            }












             

            posted @ 2010-05-20 20:13 abilitytao 閱讀(2257) | 評論 (4)編輯 收藏

            一點思考

            越來越發現 其實學生的水平 很大程度上還是依賴學校的綜合實力 畢竟我們學到的東西一大部分都是從老師那里來的 看來還是要多和外校的老師和同學交流才行啊。

            posted @ 2010-05-19 14:54 abilitytao 閱讀(228) | 評論 (2)編輯 收藏

            關于算法的一些細節拾遺

            取整函數的一些性質:

                     x-1 < ëxû £ x £ éxù < x+1;

                      ë n/2 û  +  é n/2 ù = n;

                      對于n ³ 0,a,b>0,有:

                      é é n/a ù /b ù = é n/ab ù ;

                      ë ë n/a û /b û = ë n/ab û ;

                      é a/b ù £ (a+(b-1))/b;  (函數值的緊上界)

                      ë a/b û ³ (a-(b-1))/b;  (函數值的緊下界)

                      f(x)= ë x û , g(x)= é x ù 為單調遞增函數

             

            posted @ 2010-05-19 13:19 abilitytao 閱讀(200) | 評論 (0)編輯 收藏

            快速排序,歸并排序,兩種基于分治策略的排序算法.

            /////////////////////快速排序,時間復雜度為O(nlog2n)///////////////////////
            template<class T>
            int Partion(T a[],int i,int j)//劃分函數
            {  
                T temp;
                temp
            =a[i];
                
            while(i<j)
                
            {  
                    
            while(i<&& temp<=a[j])  
                            j
            --;
                    
            if(i<j)
                    

                        a[i]
            =a[j]; 
                        i
            ++
                    }

                    
            while(i<&& a[i]<=temp) 
                        i
            ++;
                    
            if(i<j)
                    

                        a[j]
            =a[i]; 
                        j
            --
                    }

                }

                a[i]
            =temp;
                
            return i;
            }



            template 
            <class T>
            void qsort(T a[],int l,int h)
            {
                
            int m;
                
            if(l<h) 
                

                    m
            =Partion(a,l,h);
                    qsort(a,l,m
            -1);
                    qsort(a,m
            +1,h); 
                }

            }


            template
            <class T>
            void SortWizard<T>::QuickSort()
            {
                qsort(a,
            0,n-1);
            }


            ////////////////////QuickSort_O(nlog2n)////////////////////////


            ///////////////////////歸并排序,時間復雜度O(nlog2n)/////////////////////////////

            template 
            <class T>
            void Merge(T sr[],T tr[],int l,int m,int n)
            {
                
            int i,j,k;
                i
            =l;
                j
            =m+1;
                k
            =l-1;
                
            while(i<=&& j<=n)
                
            {
                    
            if(sr[i]<sr[j]) 
                        tr[
            ++k]=sr[i++];
                    
            else 
                        tr[
            ++k]=sr[j++];
                }

                    
            while(i<=m)
                        tr[
            ++k]=sr[i++];
                    
            while(j<=n)
                        tr[
            ++k]=sr[j++];
                    
            for(i=l;i<=n;i++
                        sr[i]
            =tr[i];
            }


            template 
            <class T>
            void Msort(T a[],T st[],int s,int t)
            {
                
            int m;
                
            if(s<t) 
                

                    m
            =(s+t)>>1;
                    Msort(a,st,s,m);
                    Msort(a,st,m
            +1,t);
                    Merge(a,st,s,m,t);
                }

            }


            template 
            <class T>
            void SortWizard<T>::MergeSort()

                T 
            *st=new T[n];
                Msort(a,st,
            0,n-1);  
                delete  [ ]st;
            }

            /**///////////////////////MergeSort_O(nlog2n)///////////////////////////////

            posted @ 2010-05-18 20:13 abilitytao 閱讀(360) | 評論 (0)編輯 收藏

            僅列出標題
            共42頁: First 10 11 12 13 14 15 16 17 18 Last 
            久久精品国产亚洲av日韩| 欧美精品乱码99久久蜜桃| 99久久国产热无码精品免费 | 中文字幕无码久久精品青草| 国产精品久久久久蜜芽| 成人久久精品一区二区三区| 久久久久久国产精品免费免费| 久久WWW免费人成一看片| 久久99精品国产麻豆宅宅 | 国产综合久久久久| 久久久久久久久66精品片| 国产精品久久久久久久久鸭| 亚洲国产小视频精品久久久三级| 久久亚洲私人国产精品vA| 欧美性猛交xxxx免费看久久久| 91精品国产综合久久精品| 久久丫忘忧草产品| 日本精品久久久久影院日本| 精品久久久无码人妻中文字幕豆芽| 久久影视国产亚洲| 久久九九亚洲精品| 国产精品欧美久久久天天影视| 久久久国产打桩机| 亚洲人成网站999久久久综合| 久久最近最新中文字幕大全| 久久精品国产网红主播| A级毛片无码久久精品免费| 亚洲精品无码久久久久AV麻豆| 99久久99久久精品国产| 久久综合中文字幕| 亚洲嫩草影院久久精品| 午夜不卡888久久| 丁香五月综合久久激情| 99久久综合国产精品二区| 色综合久久久久| 久久国产高清一区二区三区| 91久久国产视频| 久久久WWW成人| 久久久一本精品99久久精品88| 久久精品国产日本波多野结衣 | 伊人久久大香线蕉综合影院首页|