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

經典的狀態壓縮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>
            日韩午夜在线电影| 在线看片第一页欧美| 亚洲欧美日韩国产综合在线| 亚洲美女性视频| 亚洲区免费影片| 久久久久久97三级| 老司机午夜精品视频| 美脚丝袜一区二区三区在线观看| 久久久www成人免费无遮挡大片| 久久午夜视频| 亚洲黄网站黄| 亚洲一区二区三区精品视频| 亚洲欧美另类在线观看| 欧美一进一出视频| 麻豆精品网站| 欧美日韩国产电影| 国产精品入口尤物| 一区二区三区中文在线观看 | 在线观看欧美黄色| 在线精品亚洲一区二区| 99国产精品视频免费观看| 宅男噜噜噜66一区二区 | 欧美亚洲免费高清在线观看| 久久精品夜色噜噜亚洲aⅴ| 你懂的视频欧美| 一区二区三区欧美在线| 欧美在线影院| 欧美日韩亚洲一区二| 亚洲——在线| 亚洲国产精品va在线看黑人| 99riav久久精品riav| 亚洲一区二区黄| 欧美国产综合| 欧美一区二区三区视频免费播放 | 国产精品美女久久久久久免费 | 永久域名在线精品| 亚洲一区二区成人在线观看| 农夫在线精品视频免费观看| 亚洲欧美国产制服动漫| 欧美另类一区二区三区| 在线观看成人av| 欧美一区二区三区免费在线看| 91久久精品一区| 欧美影院视频| 国产精品久久91| 中日韩视频在线观看| 欧美电影在线播放| 欧美一区日韩一区| 国产精品va在线| 在线综合亚洲欧美在线视频| 亚洲第一在线| 久久国产精品久久久久久久久久| 欧美视频日韩视频| 99国产精品99久久久久久粉嫩| 久久婷婷久久| 欧美一区二区在线视频| 国产精品腿扒开做爽爽爽挤奶网站| 亚洲乱码一区二区| 亚洲激情一区| 欧美激情一区二区三区在线视频| 亚洲第一毛片| 久久手机免费观看| 久久丁香综合五月国产三级网站| 国产精品久久网站| 亚洲欧美久久久| av成人福利| 国产精品theporn88| 亚洲午夜国产成人av电影男同| 亚洲国产精品毛片| 欧美另类videos死尸| 亚洲天堂视频在线观看| av成人免费观看| 国产精品视频福利| 久久精品国产久精国产思思| 欧美一区二视频| 在线观看日韩欧美| 亚洲国产一二三| 欧美另类videos死尸| 一区二区三区欧美亚洲| 在线亚洲电影| 国产精品综合色区在线观看| 午夜精品免费| 久久精品天堂| 国产精品男女猛烈高潮激情 | 精品福利电影| 免费在线国产精品| 欧美bbbxxxxx| 99精品国产高清一区二区| 一区二区三区四区蜜桃| 国产精品亚洲综合| 老司机亚洲精品| 欧美三日本三级少妇三2023| 午夜精品福利一区二区三区av| 午夜精品影院| 91久久在线观看| 亚洲一区二区三区久久| 国产夜色精品一区二区av| 免费欧美电影| 国产精品久久久99| 欧美激情女人20p| 国产精品乱子乱xxxx| 欧美不卡一区| 国产乱码精品一区二区三区忘忧草 | 欧美日韩一区二区三区视频| 久久福利精品| 欧美精品一区三区| 欧美一级视频免费在线观看| 欧美大片一区| 久久综合九九| 国产精品夜色7777狼人| 欧美激情一级片一区二区| 国产伦理一区| 99视频有精品| 亚洲乱码日产精品bd| 久久影视三级福利片| 欧美亚洲一区| 欧美精品一区在线播放| 久久久久久网站| 国产精品久久久久影院色老大| 亚洲国产欧美一区二区三区同亚洲 | 性18欧美另类| 亚洲视频观看| 欧美成人有码| 欧美r片在线| 国产日韩一区在线| 在线亚洲观看| 亚洲天堂网在线观看| 欧美另类久久久品| 91久久精品国产91性色| 亚洲精品久久在线| 美女诱惑黄网站一区| 免费不卡在线观看| 黄色精品免费| 久久精品中文字幕一区二区三区| 欧美在线视频a| 亚洲一区二区三区中文字幕| 麻豆精品精华液| 在线视频精品一| 欧美精品网站| 亚洲日韩欧美视频| 一本久道久久综合婷婷鲸鱼| 欧美激情一区二区三区全黄 | 一区二区三区产品免费精品久久75| 欧美wwwwww| 亚洲精品九九| 亚洲影视在线| 国产精品一区一区三区| 亚洲欧美久久久| 久久久午夜视频| 亚洲国产精品va在线看黑人动漫 | 国产午夜精品久久久久久久| 午夜精品99久久免费| 巨乳诱惑日韩免费av| 亚洲国产成人av好男人在线观看| 老司机精品视频一区二区三区| 亚洲电影免费观看高清完整版| 最新亚洲一区| 欧美日韩在线一区二区| 亚洲曰本av电影| 久久综合狠狠综合久久激情| 亚洲欧洲美洲综合色网| 欧美日韩不卡合集视频| 亚洲综合日韩中文字幕v在线| 久久av免费一区| 亚洲黄色免费网站| 国产精品h在线观看| 欧美一区二区三区免费视频| 看片网站欧美日韩| 夜夜爽www精品| 国产精品爽爽爽| 久久综合成人精品亚洲另类欧美 | 午夜日韩电影| 韩国av一区二区| 欧美精品日韩| 久久福利影视| 99www免费人成精品| 久久精品日韩一区二区三区| 亚洲美洲欧洲综合国产一区| 国产精品毛片| 欧美精品激情| 久久精品中文字幕免费mv| 亚洲视频网站在线观看| 欧美国产日产韩国视频| 亚洲欧美日韩人成在线播放| 在线免费观看成人网| 国产精品久久久久久av福利软件| 久久久久久久久久久久久9999| 亚洲久久一区| 久久亚洲私人国产精品va| 亚洲一区二区三| 亚洲日本成人女熟在线观看| 国产麻豆日韩欧美久久| 欧美成人一区二区| 欧美一区二区三区在线免费观看| 9色国产精品| 亚洲精品久久久久久一区二区| 久久久精品国产一区二区三区| 亚洲一本视频| 日韩一级免费| 亚洲人精品午夜在线观看|