• <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://www.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)論排行榜

            国产精品女同久久久久电影院| 一级做a爰片久久毛片毛片| 精品久久一区二区| 亚洲成人精品久久| 老司机午夜网站国内精品久久久久久久久 | 久久r热这里有精品视频| 久久久久久综合一区中文字幕| 国产无套内射久久久国产| 一极黄色视频久久网站| 久久不见久久见免费视频7| 69SEX久久精品国产麻豆| 久久精品国产精品亚洲艾草网美妙| 亚洲精品午夜国产va久久| 久久国产欧美日韩精品免费| 久久久久亚洲AV成人片| 国产精品狼人久久久久影院| 伊人 久久 精品| 欧美久久综合性欧美| 久久久噜噜噜久久中文字幕色伊伊 | 国产精品久久久久久五月尺| av无码久久久久久不卡网站| 久久亚洲av无码精品浪潮| 性欧美丰满熟妇XXXX性久久久| 99久久精品免费看国产| 无码AV波多野结衣久久| 久久精品国产精品亚洲| 欧美牲交A欧牲交aⅴ久久| 久久有码中文字幕| 69久久夜色精品国产69| 狠狠色婷婷久久综合频道日韩 | 久久国产免费直播| 久久婷婷五月综合97色直播| 精品久久久久久综合日本| 国产成人精品综合久久久 | 久久偷看各类wc女厕嘘嘘| 日韩欧美亚洲综合久久影院Ds | 亚洲国产二区三区久久| 久久天堂AV综合合色蜜桃网| 伊人情人综合成人久久网小说| 97超级碰碰碰碰久久久久| 国产亚洲色婷婷久久99精品|