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

            為生存而奔跑

               :: 首頁 :: 聯系 :: 聚合  :: 管理
              271 Posts :: 0 Stories :: 58 Comments :: 0 Trackbacks

            留言簿(5)

            我參與的團隊

            搜索

            •  

            積分與排名

            • 積分 - 328427
            • 排名 - 74

            最新評論

            閱讀排行榜

            評論排行榜

             

            對于每一次的操作用矩陣表示,這里的矩陣a是(n+1,n+1),初始化為一個單位矩陣

            ‘g’ num 操作,表示使第num個數增加1,使矩陣a的第num行最后一個元素增加1,即a[num][last]+=1

            ‘e’ num 操作,表示使第num個數變為0,使矩陣a的第num行全部變為0

            即for(i=1:i<=last;i++) a[num][i]=0;

            ‘s’ num1,num2操作,表示使第num1和num2元素交換位置,使矩陣a 的第num1和num2行互換就可以了for(i=1:i<=last;i++) swap(a[num1][i],a[num2][i]);

            最后結果就是a[i][n+1]

            #include<iostream>
            #include
            <algorithm>
            #include
            <string>
            #include
            <vector>
            #include
            <cmath>
            #include
            <map>
            using namespace std;
            #define maxn 102
            int m,n;
            void mul(__int64 sor1[][maxn],__int64 sor2[][maxn],__int64 des[][maxn])
            {
                
            for(int i=0;i<=n;i++)
                    
            for(int j=0;j<=n;j++)
                    
            {
                        des[i][j]
            =0;
                        
            for(int k=0;k<=n;k++)
                            
            if(sor1[i][k] && sor2[k][j])
                                des[i][j]
            +=sor1[i][k]*sor2[k][j];
                    }

            }

            void copy(__int64 sor[][maxn],__int64 des[][maxn])
            {
                
            for(int i=0;i<=n;i++)
                    
            for(int j=0;j<=n;j++)
                        des[i][j]
            =sor[i][j];
            }

            void multiply(__int64 sor[][maxn],__int64 des[][maxn],int n)
            {
                
            if(n<=0)
                
            {
                    
            for(int i=0;i<=n;i++)
                    
            {
                        
            for(int j=0;j<=n;j++)
                            des[i][j]
            =0;
                        des[i][i]
            =1;
                    }

                }

                
            else if(n==1)
                    copy(sor,des);
                
            /*else if(n==2)
                    mul(sor,sor,des);
            */

                
            else
                
            {
                    __int64 tmp[maxn][maxn];
                    multiply(sor,tmp,n
            /2);
                    mul(tmp,tmp,des);
                    
            if(n%2)
                    
            {
                        copy(des,tmp);
                        mul(tmp,sor,des);
                    }

                }

            }

            void swap(__int64 & a1,__int64 & a2)
            {
                __int64 tmp;
                tmp
            =a1;    a1=a2;    a2=tmp;
            }

            void print(__int64 a[][maxn])
            {
                
            for(int i=0;i<=n;i++)
                
            {
                    
            for(int j=0;j<=n;j++)
                        printf(
            "%d ",a[i][j]);
                    printf(
            "\n");

                }

            }

            int main()
            {
                
            char cmd;
                
            int k;
                __int64 mat[maxn][maxn],ans[maxn][maxn];
                
            while(scanf("%d%d%d",&n,&m,&k)!=EOF,n||m||k)
                
            {
                    memset(mat,
            0,sizeof(mat));
                    
            for(int i=0;i<=n;i++)
                        mat[i][i]
            =1;
                    
            while(k--)
                    
            {
                        getchar();
                        cmd
            =getchar();
                        
            if(cmd=='s')
                        
            {
                            
            int id1,id2;
                            scanf(
            "%d%d",&id1,&id2);
                            id1
            --,id2--;
                            
            for(int i=0;i<=n;i++)
                                swap(mat[id1][i],mat[id2][i]);
                        }

                        
            else if(cmd=='g')
                        
            {
                            
            int id;
                            scanf(
            "%d",&id);
                            id
            --;
                            mat[id][n]
            ++;
                        }

                        
            else
                        
            {
                            
            int id;
                            scanf(
            "%d",&id);
                            id
            --;
                            
            for(int i=0;i<=n;i++)
                                mat[id][i]
            =0;
                        }

                    }

                    
            //print(mat);
                    multiply(mat,ans,m);
                    printf(
            "%I64d",ans[0][n]);
                    
            for(int i=1;i<n;i++)
                        printf(
            " %I64d",ans[i][n]);
                    printf(
            "\n");
                }

            }
            posted on 2009-08-17 14:36 baby-fly 閱讀(524) 評論(1)  編輯 收藏 引用 所屬分類: Algorithm

            Feedback

            # re: 【矩陣問題】PKU 3735 Training little cats 2010-11-06 12:22 aaa
            你是做系統的?看你的編程風格  回復  更多評論
              

            欧美激情精品久久久久久久| 99久久精品国产免看国产一区| 久久精品国产亚洲AV无码麻豆| 久久99精品国产自在现线小黄鸭| 国产精品美女久久久网AV| 四虎国产精品成人免费久久| 久久AV高清无码| 国产毛片久久久久久国产毛片| 亚洲精品乱码久久久久久蜜桃 | 伊人久久大香线蕉AV一区二区| 一级女性全黄久久生活片免费| 久久精品中文字幕无码绿巨人 | 93精91精品国产综合久久香蕉| 亚洲国产精品无码成人片久久| 久久久久久av无码免费看大片 | 国产2021久久精品| 亚洲中文久久精品无码ww16| 亚洲国产日韩欧美综合久久| av午夜福利一片免费看久久| 中文字幕无码av激情不卡久久| 久久99热精品| 精品无码久久久久久久动漫| 99精品伊人久久久大香线蕉| 免费精品国产日韩热久久| 久久国产成人精品国产成人亚洲| 99久久er这里只有精品18| 亚洲欧美国产日韩综合久久| 国产激情久久久久影院老熟女| 国产精品久久网| 狠狠久久亚洲欧美专区| 人妻无码中文久久久久专区 | 久久国产精品二国产精品| 久久久久成人精品无码中文字幕| 久久久久se色偷偷亚洲精品av| 国色天香久久久久久久小说| 亚洲国产精品综合久久网络 | 国产精品久久久久久久久免费 | 无码精品久久一区二区三区| 免费精品久久久久久中文字幕| 久久久WWW成人免费毛片| 久久久久亚洲AV无码去区首|