青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

經典的狀態壓縮DP。f[i][j]表示第i行,方格排布為二進制數j(第k位上為1表示凸出一個格子,為0表示不凸出)的方案數。用DFS進行狀態轉移。
如果行數比較多的話,可以用矩陣乘法優化。因為每行的狀態轉移都是相同的。設烈數為m,行數為n,可以做到O(23mlogn)。

/*************************************************************************
Author: WHU_GCC
Created Time: 2007-8-28 20:53:12
File Name: pku2411.cpp
Description: 
***********************************************************************
*/

#include 
<iostream>
long long f[12][2048], n, m;
void dfs(int i, int j, int jj, int s)
{
    
if (s == m)
        f[i 
+ 1][jj] += f[i][j];
    
else if ((jj & (1 << s)) == 0)
    
{
        dfs(i, j, jj 
| (1 << s), s + 1);
        
if (s < m - 1 && (jj & (1 << (s + 1))) == 0) dfs(i, j, jj, s + 2);
    }

    
else
        dfs(i, j, jj 
& ~(1 << s), s + 1);
}

int main()
{
    
while (scanf("%d%d"&n, &m), n + m != 0)
    
{
        memset(f, 
0sizeof(f));
        f[
0][0= 1;
        
for (int i = 0; i < n; i++)
            
for (int j = 0; j < (1 << m); j++)
                
if (f[i][j])
                    dfs(i, j, j, 
0);
        printf(
"%I64d\n", f[n][0]);
    }

    
return 0;
}
posted on 2007-08-28 21:03 Felicia 閱讀(1447) 評論(12)  編輯 收藏 引用 所屬分類: 動態規劃
Comments
  • # re: [動態規劃]pku2411
    ACLover
    Posted @ 2007-09-20 12:45
    可不可以講下具體怎么狀態轉移啊,
    太精簡了,看不懂。  回復  更多評論   
  • # re: [動態規劃]pku2411
    Felicia
    Posted @ 2007-09-20 18:27
    @ACLover
    呵呵,這么簡單,你一定想的通的  回復  更多評論   
  • # re: [動態規劃]pku2411
    啊水電費
    Posted @ 2007-10-09 23:05
    if (s < m - 1 && (jj & (1 << (s + 1))) == 0) dfs(i, j, jj, s + 2);
    這句話沒有看懂!  回復  更多評論   
  • # re: [動態規劃]pku2411
    啊水電費
    Posted @ 2007-10-09 23:06
    如果前一行狀態對應的位是0,下一行對應位可以取0or1?  回復  更多評論   
  • # re: [動態規劃]pku2411
    Felicia
    Posted @ 2007-10-10 08:48
    @啊水電費
    就這兩種狀態轉移,分別對應橫著放和豎著放
    00 -> 00
    0 -> 1  回復  更多評論   
  • # re: [動態規劃]pku2411[未登錄]
    jiushiwo
    Posted @ 2007-10-12 09:11
    #include <iostream>
    long long f[12][2048], n, m;
    void dfs(int i, int j, int jj, int s)
    {
    if (s == m)
    f[i + 1][jj] += f[i][j];
    else if ((jj & (1 << s)) == 0)
    {
    dfs(i, j, jj | (1 << s), s + 1);
    if (s < m - 1 && (jj & (1 << (s + 1))) == 0) dfs(i, j, jj, s + 2);
    }
    else
    dfs(i, j, jj & ~(1 << s), s + 1); //為什么上一層是1,下一層直接置0呢?為什么不考慮置1的情況?
    }
    int main()
    {
    while (scanf("%d%d", &n, &m), n + m != 0)
    {
    memset(f, 0, sizeof(f));
    f[0][0] = 1;
    for (int i = 0; i < n; i++)
    for (int j = 0; j < (1 << m); j++)
    if (f[i][j])
    dfs(i, j, j, 0);
    printf("%I64d\n", f[n][0]);
    }
    return 0;
    }  回復  更多評論   
  • # re: [動態規劃]pku2411
    Felicia
    Posted @ 2007-10-12 17:35
    @jiushiwo
    1表示已經放了,不能放了,0表示還能放。  回復  更多評論   
  • # re: [動態規劃]pku2411
    zlone
    Posted @ 2007-11-05 22:51
    如何理解橫放與豎放與不放3種狀態的2進制表示呢
    想了一晚上試了好多方法不見效,奢望指點一二  回復  更多評論   
  • # re: [動態規劃]pku2411
    Felicia
    Posted @ 2007-11-06 13:46
    @zlone
    畫個圖想想,不要考慮怎么放,要考慮放后的形狀  回復  更多評論   
  • # re: [動態規劃]pku2411
    loveacm
    Posted @ 2007-12-03 17:08
    小弟愚笨,請問jj代表什么意思  回復  更多評論   
  • # re: [動態規劃]pku2411
    Felicia
    Posted @ 2007-12-03 17:51
    j是初始狀態,jj是目標狀態  回復  更多評論   
  • # re: [動態規劃]pku2411
    loveacm
    Posted @ 2007-12-03 18:15
    謝謝,另外,請問第k位上為1表示凸出一個格子,為0表示不凸出的方案數,這個凸出如何理解?您的1并不表示豎放,0并不表示橫放吧?  回復  更多評論   
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            美女视频黄 久久| 美女主播一区| 欧美亚男人的天堂| 久久久久久久久久久久久女国产乱 | 欧美自拍丝袜亚洲| 日韩视频一区二区| 欧美黄色一区| 久久精品成人一区二区三区| 欧美a级片网站| 亚洲二区视频在线| 国内精品免费午夜毛片| 日韩视频免费观看| 亚洲精品亚洲人成人网| 欧美激情片在线观看| 亚洲国产精品精华液网站| 一区二区在线观看视频在线观看| 欧美日本精品一区二区三区| 久久亚洲综合色| 久久夜色精品国产亚洲aⅴ | 久久午夜电影| 亚洲影院免费观看| 亚洲国产精品成人精品| 亚洲欧美日韩国产综合| 在线观看成人小视频| 国产午夜精品久久久久久久| 欧美精品www| 欧美日韩国产美| 国产精品久久久久久一区二区三区| 久久久综合精品| 蜜桃久久av一区| 美国成人直播| 国产精品久久| 国模私拍一区二区三区| 国产精品人人做人人爽| 黄色小说综合网站| 亚洲国产一二三| 中文在线资源观看网站视频免费不卡| 在线视频日本亚洲性| 久久青草欧美一区二区三区| 欧美成ee人免费视频| 久久视频在线视频| 欧美精品入口| 在线日韩av片| 欧美一区二区视频在线观看| 久久久久一区二区三区四区| 欧美韩国日本一区| 性欧美8khd高清极品| 欧美成人一区二区三区在线观看| 裸体一区二区三区| 国产精品观看| 亚洲激情在线视频| 亚洲福利在线观看| 欧美va亚洲va国产综合| 欧美亚洲一区二区三区| 欧美日韩国产精品成人| 精品91久久久久| 亚洲天堂网在线观看| 99国产一区| 亚洲美女av网站| 亚洲欧洲综合另类在线| 欧美另类人妖| 欧美sm重口味系列视频在线观看| 一区二区三区四区国产精品| 国产精品久久久一区麻豆最新章节| 欧美a级理论片| 可以免费看不卡的av网站| 亚洲综合色视频| 欧美aⅴ一区二区三区视频| 久久久久国产一区二区三区| 1769国产精品| 国产精品资源在线观看| 欧美mv日韩mv国产网站| 亚洲欧美日韩国产一区| 欧美中日韩免费视频| 久久精品99国产精品酒店日本| 蜜桃久久av一区| 久久久久国产精品人| 99精品福利视频| 先锋a资源在线看亚洲| 日韩视频永久免费| 欧美小视频在线| 国产日韩欧美在线一区| 亚洲视频在线观看| 欧美成人国产va精品日本一级| 亚洲精品偷拍| 在线国产欧美| 伊人夜夜躁av伊人久久| 国产精品久99| 国产精品天天摸av网| 欧美久久视频| 欧美顶级艳妇交换群宴| 久久久久久久网站| 久久一区欧美| 欧美精品久久一区二区| 久久婷婷综合激情| 欧美在线观看天堂一区二区三区 | 久久女同互慰一区二区三区| 西瓜成人精品人成网站| 欧美亚洲系列| 久久久久久999| 欧美成人乱码一区二区三区| 麻豆成人在线观看| 亚洲精品视频免费| 亚洲永久精品国产| 午夜电影亚洲| 欧美日韩视频一区二区| 国产欧美一区二区三区在线看蜜臀| 国产精品二区三区四区| 国产精品自拍视频| 亚洲成在人线av| 9l国产精品久久久久麻豆| 亚洲视频图片小说| 久久久青草婷婷精品综合日韩 | 日韩一级视频免费观看在线| 日韩视频精品在线观看| 久久久夜夜夜| 亚洲一区二区三区在线观看视频| 欧美国产精品久久| 久久综合精品国产一区二区三区| 久久综合久久综合久久| 欧美丰满少妇xxxbbb| 亚洲成人在线网| 亚洲另类春色国产| 亚洲午夜91| 国产精品美女黄网| 亚洲乱码国产乱码精品精可以看| 久久xxxx| 亚洲香蕉网站| 欧美老女人xx| 一区二区免费在线观看| 亚洲天堂免费在线观看视频| 欧美成年人视频| 久久综合一区二区| 亚洲三级电影在线观看| 欧美国产一区视频在线观看| 久久精品国产亚洲一区二区三区| 国产无一区二区| 久久精品一区二区国产| 久久久www成人免费无遮挡大片| 好吊色欧美一区二区三区四区| 欧美中文在线观看国产| 久久乐国产精品| 亚洲国产综合在线| 美女脱光内衣内裤视频久久影院| 亚洲香蕉网站| 欧美日韩综合在线免费观看| 有码中文亚洲精品| 亚洲午夜91| 亚洲午夜日本在线观看| 欧美日韩的一区二区| 中文国产成人精品久久一| 亚洲区在线播放| 欧美日韩精品福利| 美女主播精品视频一二三四| 免费的成人av| 国产中文一区二区三区| 久久精品免费| 欧美理论在线播放| 久久久久.com| 欧美成人中文字幕| 午夜免费电影一区在线观看| 久久免费国产| 久久精品国产久精国产一老狼| 欧美成人精品在线播放| 欧美呦呦网站| 国产私拍一区| 欧美一区二区三区的| 欧美一区永久视频免费观看| 欧美成人a视频| 欧美黄色大片网站| 国内精品久久久久久久影视蜜臀| 亚洲美洲欧洲综合国产一区| 在线精品亚洲一区二区| 亚洲欧美成人一区二区在线电影| 亚洲美女色禁图| 欧美电影专区| 最新国产の精品合集bt伙计| 在线成人国产| 久久精品亚洲国产奇米99| 嫩草影视亚洲| 这里只有精品电影| 欧美性大战久久久久| 亚洲欧美春色| 久久天天躁狠狠躁夜夜爽蜜月| 激情自拍一区| 欧美三级不卡| 久久国产免费| 日韩午夜精品视频| 久久精品国产96久久久香蕉| 极品少妇一区二区三区精品视频 | 亚洲欧洲一区二区三区在线观看 | 欧美高清视频免费观看| 亚洲毛片在线看| 国产女精品视频网站免费| 久久久亚洲人| 亚洲欧美成人精品| 国产精品99久久久久久久女警 | 在线一区二区三区做爰视频网站| 国产精品一区二区男女羞羞无遮挡 | 欧美精品福利在线|