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

Why so serious? --[NKU]schindlerlee

2010年1月13日星期三.pku1185 狀態壓縮動態規劃

2010年1月13日星期三.pku1185
狀態壓縮動態規劃

pku1185:題目是中文的,而且題目很經典,題意不再贅述。

這個題目比pku2411和sgu131兩題來說多了一行狀態需要儲存
因為如果上上行和此行有關
而且此題不再是求完美覆蓋的方式,而是求能最大的放置個數。

方法是先求出一行中的所有放置方法。
然后逐行遞推,然后在遞推的過程中枚舉當前行狀態,如果和上兩行不沖突的話,就
進行放置個數的更新

f[N][60][60] //N行,上一行的狀態號,上上行的狀態號

具體看代碼吧
  1 
  2 /*
  3  * SOUR:pku1185
  4  * ALGO:State Compression DP
  5  * DATE: 2010年 01月 13日 星期三 13:57:49 CST
  6  * COMM:4 http://m.shnenglu.com/schindlerlee
  7  * */
  8 #include<iostream>
  9 #include<cstdio>
 10 #include<cstdlib>
 11 #include<cstring>
 12 #include<algorithm>
 13 using namespace std;
 14 typedef long long LL;
 15 const int maxint = 0x7fffffff;
 16 const long long max64 = 0x7fffffffffffffffll;
 17 
 18 #define bin(i) (1 << (i))
 19 #define low(i) ((i) & -(i))
 20 #define SL(i) ((i) << 1)
 21 #define SR(i) ((i) >> 1)
 22 
 23 void ckmax(int &a, int b)
 24 if (a < b) a = b; }
 25 
 26 const int N = 102;
 27 const int M = 10;
 28 
 29 //60是對M==10的一行進行深搜得到的最大狀態數量
 30 int f[N][60][60], n, m, terrain[N], full;
 31 int s[60], top, c[60];
 32 
 33 int legal(int x)
 34 {
 35     int b = 0, cnt = 0, c;
 36     while (x > 0) {
 37         cnt++;
 38         c = low(x);
 39         if (SL(b) & x || SL(SL(b)) & x) {
 40             return -1;
 41         }
 42         x ^= c;
 43         b = c;
 44     }
 45     return cnt;
 46 }
 47 
 48 void preprocess()
 49 {
 50     int i, j, cnt;
 51     for (i = 0; i <= full; i++) {
 52         if ((cnt = legal(i)) >= 0) {
 53             s[top] = i, c[top] = cnt, top++;
 54         }
 55     }
 56 }
 57 
 58 bool contradict(int cur, int s1, int s2)
 59 return (cur & s1) || (cur & s2); }
 60 
 61 int main()
 62 {
 63     int i, j, k;
 64     char str[12];
 65     while (scanf("%d%d\n"&n, &m) == 2) {
 66         full = bin(m) - 1;
 67         preprocess();
 68 
 69         for (i = 1; i <= n; i++) {
 70             scanf("%s\n", str);
 71             int tmp = 0;
 72             for (j = 0; j < m; j++) {
 73                 tmp <<= 1;
 74                 if (str[j] == 'H') {
 75                     tmp |= 1;
 76                 }
 77             }
 78             terrain[i] = tmp;
 79         }
 80 
 81         for (i = 1; i <= n; i++) {
 82             for (j = 0; j < top; j++) { //枚舉當前行
 83                 int cur = s[j], curcnt = c[j];
 84                 if (cur & terrain[i]) {
 85                     continue;
 86                 }    //不符合第i行地形要求
 87 
 88                 for (int k1 = 0; k1 < top; k1++) { //枚舉前兩行
 89                     for (int k2 = 0; k2 < top; k2++) {
 90                         if (!contradict(cur, s[k1], s[k2])) { //和上兩行狀態不沖突
 91                             ckmax(f[i][j][k1], f[i - 1][k1][k2] + curcnt);
 92                         }
 93                     }
 94                 }
 95             }
 96         }
 97 
 98         int res = 0;
 99         for (i = 0; i < top; i++) {
100             for (j = 0; j < top; j++) {
101                 ckmax(res, f[n][i][j]);
102             }
103         }
104         printf("%d\n", res);
105     }
106     return 0;
107 }
108 
109 


posted on 2010-01-13 22:25 schindlerlee 閱讀(1059) 評論(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>
            久久精品日韩| 国产欧美日韩综合精品二区| 久热re这里精品视频在线6| 亚洲午夜免费福利视频| 9人人澡人人爽人人精品| 亚洲国产经典视频| 亚洲毛片一区| 亚洲一区二区在线| 亚洲欧美资源在线| 欧美一级专区免费大片| 久久成人综合视频| 久久综合精品一区| 亚洲丰满在线| 日韩视频免费观看高清在线视频| 亚洲精品资源| 亚洲小说欧美另类社区| 欧美影院在线| 免费不卡在线观看| 欧美天堂亚洲电影院在线观看| 国产精品电影观看| 国内综合精品午夜久久资源| 在线看一区二区| 宅男在线国产精品| 久久久久久久久一区二区| 欧美激情亚洲另类| 99视频国产精品免费观看| 午夜久久一区| 欧美国产日韩xxxxx| 国产老女人精品毛片久久| 黄网动漫久久久| 在线亚洲一区| 嫩草影视亚洲| 亚洲欧美国产精品专区久久| 美女图片一区二区| 国产精品久久久久久久午夜| 在线精品视频一区二区三四| 午夜精品www| 欧美激情精品久久久| 亚洲欧美大片| 欧美日韩亚洲网| 亚洲国产免费看| 久久精品2019中文字幕| 亚洲第一页自拍| 久久精品久久综合| 国产精品美女午夜av| 亚洲日本成人| 久久免费视频网| 亚洲网址在线| 欧美区在线播放| 亚洲三级色网| 欧美激情精品久久久久久变态| 亚洲欧美久久久| 国产精品第三页| 亚洲一区二区三区四区中文| 久久久久久亚洲综合影院红桃| 久久久久久久久久看片| 国产精品久久网站| 中文精品99久久国产香蕉| 欧美成人亚洲| 久久精品一级爱片| 国产在线视频欧美一区二区三区| 亚洲专区免费| 一本久道久久综合中文字幕| 老司机免费视频久久| 国内精品久久久| 久久嫩草精品久久久久| 欧美一区在线直播| 好看的av在线不卡观看| 久久国产免费| 久久成人免费日本黄色| 黄色在线一区| 亚洲缚视频在线观看| 欧美国产精品| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲激情小视频| 欧美成人黄色小视频| 猛干欧美女孩| 日韩亚洲欧美中文三级| 亚洲精选视频免费看| 欧美视频在线观看免费网址| 亚洲欧美成人一区二区三区| 亚洲一品av免费观看| 国产视频久久| 欧美激情第二页| 国产精品va| 久久午夜精品一区二区| 免费国产一区二区| 亚洲图片欧美午夜| 校园激情久久| 在线精品视频免费观看| 亚洲国产精品一区二区尤物区 | 亚洲小说春色综合另类电影| 亚洲一区三区视频在线观看| 国产视频在线观看一区二区三区| 毛片av中文字幕一区二区| 美国十次了思思久久精品导航| 亚洲美女av电影| 在线综合亚洲| 亚洲大片av| 亚洲一区欧美一区| 亚洲国产欧美一区二区三区同亚洲| 亚洲欧洲一区二区在线观看| 国产精品一级在线| 亚洲国产精品女人久久久| 国产精品亚洲一区| 亚洲国产日韩在线| 国产精品日产欧美久久久久| 免费日韩成人| 国产精品美女午夜av| 欧美va亚洲va香蕉在线| 欧美亚洲不卡| 亚洲精品影院| 亚洲亚洲精品三区日韩精品在线视频| 亚洲午夜av| 亚洲欧洲精品一区二区三区| 亚洲天堂久久| 夜夜嗨一区二区| 久久久久久亚洲精品中文字幕| 亚洲视频观看| 女女同性女同一区二区三区91| 亚洲专区一区| 欧美黄色一区| 免费一区视频| 国产一区二区三区久久悠悠色av| 亚洲每日更新| 亚洲精品免费一区二区三区| 久久精品九九| 久久人人九九| 国产亚洲亚洲| 欧美亚洲视频| 欧美亚洲免费电影| 国产精品久久一级| 一本到高清视频免费精品| 亚洲精品一品区二品区三品区| 久久国产精品99国产精| 欧美在线综合| 国产亚洲精品一区二555| 亚洲欧美成人一区二区三区| 亚洲专区一区二区三区| 欧美午夜激情在线| 国产精品99久久99久久久二8| 一本色道久久| 国产精品久久久久久av福利软件 | 亚洲欧美激情在线视频| 欧美日韩伦理在线免费| 亚洲免费播放| 亚洲午夜久久久| 欧美视频在线视频| 亚洲图中文字幕| 欧美一区二区三区久久精品| 国产精品一二一区| 久久精品国产在热久久| 欧美激情黄色片| 一区二区三区不卡视频在线观看| 欧美精品综合| 一个色综合导航| 久久不射网站| 一区免费在线| 欧美极品一区| 亚洲男人av电影| 久久青青草原一区二区| 亚洲欧洲日产国产网站| 欧美区一区二| 亚洲欧美中文日韩v在线观看| 久久久久久久久一区二区| 亚洲国产视频一区| 欧美色区777第一页| 久久av一区二区| 91久久精品美女| 亚洲综合日韩| 在线观看成人一级片| 欧美精品在线网站| 欧美一级精品大片| 亚洲国产综合在线| 久久精品女人天堂| 99视频精品全国免费| 国产一区二区三区观看| 欧美激情1区2区3区| 亚洲欧美视频一区二区三区| 性娇小13――14欧美| 性色av一区二区三区在线观看| 欧美一区二区视频网站| 在线日韩欧美视频| 欧美午夜精品久久久久久孕妇| 久久精品国产亚洲5555| 99ri日韩精品视频| 久久综合九色99| 亚洲欧美日韩在线观看a三区| 狠久久av成人天堂| 国产精品久久久久久久第一福利| 久久久久久久999| 亚洲香蕉成视频在线观看| 欧美激情一区二区三区高清视频 | 精品1区2区3区4区| 国产精品久久久久久久第一福利| 久热精品视频在线免费观看| 亚洲一区高清| 日韩视频永久免费观看| 欧美不卡视频一区发布| 欧美一区二区三区精品电影|