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

            ACM PKU 3420 Quad Tiling 很難的動(dòng)態(tài)規(guī)劃,需要靈活應(yīng)用矩陣`

            http://acm.pku.edu.cn/JudgeOnline/problem?id=3420
            好幾個(gè)人都問(wèn)我這道題,可是我自己也不會(huì)做,真是慚愧啊...太落后了..別人都飛機(jī)大炮了,我還在小米加步槍.... 太羞愧了 ..

            不過(guò)還好,除了Felicia的程序以外(http://m.shnenglu.com/felicia/archive/2007/10/08/33740.html),我還讀了兩個(gè)牛人的程序.

            一個(gè)是Ricky_
             1#include "stdio.h"
             2int matrix[4][4= {0,0,0,-1},
             3                     {1,0,0,1},
             4                     {0,1,0,5},
             5                     {0,0,1,1}}
            ;
             6int n, m;
             7int tmp[4][4], quo[4][4], ans[4];
             8
             9void MatrixCopy( int to[][4], int from[][4] ){
            10     int i, j;
            11     for ( i = 0; i < 4; i++ ){
            12         for ( j = 0; j < 4; j++ ){
            13             to[ i ][ j ] = from[ i ][ j ];
            14         }

            15     }
                 
            16}

            17void MatrixMulti( int a[][4], int b[][4], int c[][4] ){
            18     int i, j, k, t;
            19     for ( i = 0; i < 4; i++ ){
            20         for ( j = 0; j < 4; j++ ){
            21             t = 0;
            22             for ( k = 0; k < 4; k++ ){
            23                 t = ( t + a[ i ][ k ] * b[ k ][ j ] ) % m;
            24             }

            25             c[ i ][ j ] = t;
            26         }

            27     }
                 
            28}

            29void MatrixPow( int n ){
            30     if ( n == 1 ) return;    
            31     MatrixPow( n / 2 );
            32     MatrixMulti( quo, quo, tmp );
            33     if ( n % 2 ){
            34          MatrixMulti( tmp, matrix, quo );   
            35     }
             else{
            36          MatrixCopy( quo, tmp );         
            37     }

            38}

            39
            40int main(){
            41    int i, j, t;
            42    while ( scanf("%d%d"&n, &m ) && n ){
            43          ans[0]=1;ans[1]=1;ans[2]=5;ans[3]=11;
            44          if ( n < 4 ){
            45               printf("%d\n", ans[ n ] % m );
            46               continue;   
            47          }
                  
            48          MatrixCopy( quo, matrix );
            49          MatrixPow( n - 3 );
            50          t = 0;
            51          for ( i = 0; i < 4; i++ ){
            52              t += ans[ i ] * quo[ i ][ 3 ];
            53          }

            54          printf("%d\n", t % m );
            55    }

            56}

            57


            還有一個(gè)我讀過(guò)的所有程序中最新穎的(當(dāng)然也可能是我孤陋寡聞了),讓人覺(jué)得神清氣爽的! 黃強(qiáng)寫(xiě)的程序!
             1#include <stdio.h>
             2#include <memory.h>
             3int n,MOD;
             4class Mat{
             5public:
             6 int v[4][4];
             7 Mat(int x){
             8  memset(v,0,sizeof(v));
             9  if (x==1)
            10   v[0][0]=v[1][1]=v[2][2]=v[3][3]=1
            11  else if (x==2){
            12   v[0][0]=1; v[0][1]=5; v[0][2]=1; v[0][3]=-1;
            13   v[1][0]=v[2][1]=v[3][2]=1;
            14  }

            15 }

            16 Mat friend operator * (const Mat &A,const Mat &B){   //矩陣相乘
            17  Mat C(0);
            18  int i,j,k;
            19  for (i=0;i<4;i++)
            20   for (j=0;j<4;j++{
            21    for (k=0;k<4;k++)
            22     C.v[i][j]=(C.v[i][j]+A.v[i][k]*B.v[k][j]%MOD)%MOD;
            23    if (C.v[i][j]<0) C.v[i][j]+=MOD;
            24   }

            25  }

            26  return C;
            27 }

            28}
            ;
            29void solve() {
            30 int ans;
            31 Mat V(1),B(2);
            32 while (n) {
            33  if (n&1) V=V*B; //奇數(shù)
            34  n>>=1;          //除以2
            35  B=B*B;   
            36 }

            37 ans=11*V.v[3][0]+5*V.v[3][1]+V.v[3][2]+V.v[3][3];
            38 ans%=MOD;
            39 printf("%d\n",ans);
            40}

            41int main(){
            42 while (scanf("%d%d",&n,&MOD)!=EOF && (n+MOD))
            43  solve();
            44 return 0;
            45}

            牛啊~~~
            記錄下來(lái),沒(méi)事就看看.這才是真正的ACM/ICPC!

            posted on 2007-11-15 14:03 流牛ζ木馬 閱讀(1594) 評(píng)論(2)  編輯 收藏 引用

            評(píng)論

            # re: ACM PKU 3420 Quad Tiling 很難的動(dòng)態(tài)規(guī)劃,需要靈活應(yīng)用矩陣` 2007-11-18 18:33 Run&Run

            看不懂.能解釋下嗎?  回復(fù)  更多評(píng)論   

            # re: ACM PKU 3420 Quad Tiling 很難的動(dòng)態(tài)規(guī)劃,需要靈活應(yīng)用矩陣` 2007-12-11 11:00 ACLover

            Ricky的程序不行啊505464 29298
            521871 29931
            526306 19184
            511851 6808
            520370 8044
            507265 21718
            都有錯(cuò)啊  回復(fù)  更多評(píng)論   


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            <2007年11月>
            28293031123
            45678910
            11121314151617
            18192021222324
            2526272829301
            2345678

            導(dǎo)航

            統(tǒng)計(jì)

            公告

            MY Email/MSN :mars1021@163.com QQ : 27402040 流牛ζ木馬

            常用鏈接

            留言簿(6)

            隨筆檔案

            相冊(cè)

            搜索

            最新隨筆

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            奇米综合四色77777久久| 国产69精品久久久久9999APGF| 久久精品国产色蜜蜜麻豆| 久久久久高潮综合影院| 久久久久久久97| 成人久久精品一区二区三区| 国产精品久久久久天天影视| 国产亚洲成人久久| 久久人妻无码中文字幕| 国产激情久久久久影院老熟女| 无夜精品久久久久久| 久久综合给久久狠狠97色| 国产成人精品久久综合| 久久综合给久久狠狠97色| 久久综合久久性久99毛片| 国产精品久久久久9999| 久久精品国产久精国产一老狼| 久久综合久久综合久久| 久久久无码人妻精品无码| 伊人伊成久久人综合网777| 国产成人AV综合久久| 99久久成人国产精品免费 | 91麻精品国产91久久久久| 一级女性全黄久久生活片免费| 国产精品久久成人影院| 亚洲综合日韩久久成人AV| 亚洲国产成人久久精品99 | 日本欧美国产精品第一页久久| 高清免费久久午夜精品| 久久综合给久久狠狠97色| 久久成人国产精品免费软件| 日本久久中文字幕| 亚洲色欲久久久久综合网 | 18岁日韩内射颜射午夜久久成人 | yy6080久久| 精品久久久无码人妻中文字幕| 久久精品极品盛宴观看| 免费精品国产日韩热久久| 一本久久a久久精品vr综合| 亚洲AV无码久久精品狠狠爱浪潮| 一本色道久久综合亚洲精品|