• <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è)人都問我這道題,可是我自己也不會(huì)做,真是慚愧啊...太落后了..別人都飛機(jī)大炮了,我還在小米加步槍.... 太羞愧了 ..

            不過還好,除了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è)我讀過的所有程序中最新穎的(當(dāng)然也可能是我孤陋寡聞了),讓人覺得神清氣爽的! 黃強(qiáng)寫的程序!
             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}

            牛啊~~~
            記錄下來,沒事就看看.這才是真正的ACM/ICPC!

            posted on 2007-11-15 14:03 流牛ζ木馬 閱讀(1599) 評(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   博問   Chat2DB   管理


            <2007年9月>
            2627282930311
            2345678
            9101112131415
            16171819202122
            23242526272829
            30123456

            導(dǎo)航

            統(tǒng)計(jì)

            公告

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

            常用鏈接

            留言簿(6)

            隨筆檔案

            相冊(cè)

            搜索

            最新隨筆

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久噜噜电影你懂的| 天天做夜夜做久久做狠狠| 久久精品国产99久久久| 久久r热这里有精品视频| 99久久人人爽亚洲精品美女| 久久精品国产精品亚洲艾草网美妙| 伊人久久大香线蕉精品| 久久午夜福利无码1000合集| 国内精品伊人久久久久av一坑 | 伊人久久大香线蕉亚洲五月天| 午夜精品久久久久久99热| 久久国产高清字幕中文| 久久成人小视频| 国产精品欧美久久久久天天影视| 久久综合亚洲色HEZYO社区| 久久九九亚洲精品| 亚洲中文字幕无码久久2017| 久久久久国产精品嫩草影院| 久久精品国产半推半就| 久久久久99精品成人片试看 | 久久午夜夜伦鲁鲁片免费无码影视| 狠狠色丁香久久综合五月| 久久精品综合网| 日本久久中文字幕| 久久福利片| 久久久久国产精品麻豆AR影院 | AAA级久久久精品无码区| 99久久精品影院老鸭窝| 欧美精品久久久久久久自慰| 久久无码AV中文出轨人妻| 久久久精品人妻无码专区不卡| 日韩亚洲欧美久久久www综合网| 亚洲色大成网站WWW久久九九| 亚洲欧洲久久久精品| 日本亚洲色大成网站WWW久久| 九九99精品久久久久久| 久久青草国产精品一区| 色综合久久88色综合天天| 中文字幕久久欲求不满| 久久国产成人午夜aⅴ影院 | 国产精品一久久香蕉国产线看观看|