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

原題地址
說實話我第一次嘗試寫炮兵陣地是在2009年……已經過去兩年多了,終于找到了一個好的解法……慶祝一下……

【狀態壓縮DP】
所謂狀態壓縮DP,就是對于某些DP問題,每一階段的狀態都有很多維,要利用某些手段將它們壓縮到一維(一個正整數),順便進行狀態的精簡(去掉不合法的狀態),然后再進行DP。這里講的主要是傳統的狀壓DP,有一種基于“插頭”的DP,更高級,以后再搞。
對于本題,可以設計出一個這樣的狀態:[0..1][0..1][0..1]...[0..1](有M個[0..1]),表示該行的每個格子放不放炮兵,如果放,為1,否則為0。顯然,這是一個M位二進制數,如果能把它們壓縮成一個int就好了。

【如何壓縮】
第一個問題是這么多維的狀態如何壓縮的問題。
對于本題,由于是二進制數,直接壓縮就可以了。但是對于某些情況,狀態是個三進制數(每個格子的屬性都有3種)甚至更多進制數,這樣,直接壓縮會導致無法使用位運算,從而使“解壓”變得很麻煩,耗時也很長(需要暴力),因此,可以將每位三進制都拆成兩位二進制:
0->00
1->01
2->10
(當然1拆成10、2拆成11也木有問題,只要能區分開就行了)
這樣,每個狀態就可以用2個二進制數來表示,可以在構造出所有合法狀態以后將每個狀態所對應的兩位二進制數存到struct里面,使用時調出即可。

【如何精簡】
這個問題是最重要的,因為,如果不精簡,在枚舉狀態以及轉移的時候就會枚舉到很多不合法狀態,導致時間浪費。
所謂精簡,是指在預處理以及DP過程中,盡量避開不合法狀態。
(1)預處理中的精簡:
包括3個部分:
<1>找到所有可能的合法狀態并編號:根據題意限制,有的狀態在階段內就不合法(比如本題,一行一階段,那么凡是有兩個1位的距離小于2的狀態都不合法),而且這種狀態所占的比重往往還很大(本題中,M=10時,也只有60種可能的合法狀態),此時,為了找到這些合法狀態,可以DFS構造實現。
需要注意的是,有的題不光要找到一個階段內的合法狀態,還要找到兩個或兩個以上階段內的合法狀態(比如那個有關多米諾骨牌的題),此時需要兩個int同時DFS;
在找到合法狀態以后,需要對每個合法狀態進行編號,以達到“壓縮”的目的。這里就涉及到了狀態編號和狀態表示的問題:比如,狀態1001,表示為9,在DFS中第一個被搜到,因此編號為0,不要搞混了這兩個(尤其不要搞混“編號為0”和“狀態表示為0”,它們是不同的)。在預處理和DP的過程中,所有涉及到狀態的數組下標,全部是編號而不是表示,知道編號要求表示,可以在DFS中記錄的數組里面調,而知道表示要求編號,可以利用逆數組或者哈希;
<2>找到每一階段的合法狀態:即使是<1>中被判定為合法的狀態,在具體的各個階段中也未必合法(比如本題,如果某一行的某一個位置是'H',不能放,而某一個狀態在這里放了,則不合法),因此要對每個階段再枚舉一遍,找到真正合法的狀態,并計入一個vector;
<3>找到狀態轉移中的合法狀態:在狀態轉移中,往往要求狀態不沖突(比如本題,在連續的三個階段中,都不能有某一位有兩個為1的情況),因此,還要枚舉每個狀態在轉移時與其不沖突的狀態,并計入vector。
注意,有時候這一步不是很容易進行,需要在DP過程中進行;
(2)DP過程中的精簡:
DP過程中,枚舉狀態、轉移決策都只枚舉合法的,在vector里面調(注意vector里記錄的全都是狀態編號而不是表示!),可以大大減少枚舉量,不過有時候,還會有一些時間浪費,這時候,可以采取一些其它的辦法來精簡,比如再次進行DFS構造合法狀態等。

總之,這類問題的目標就是“精簡,精簡,再精簡,使枚舉到的不合法狀態減到最少”。
代碼:
#include <iostream>
#include 
<stdio.h>
#include 
<stdlib.h>
#include 
<string.h>
#include 
<vector>
using namespace std;
#define re(i, n) for (int i=0; i<n; i++)
#define re1(i, n) for (int i=1; i<=n; i++)
#define re2(i, l, r) for (int i=l; i<r; i++)
#define re3(i, l, r) for (int i=l; i<=r; i++)
#define rre(i, n) for (int i=n-1; i>=0; i--)
#define rre1(i, n) for (int i=n; i>0; i--)
#define rre2(i, r, l) for (int i=r-1; i>=l; i--)
#define rre3(i, r, l) for (int i=r; i>=l; i--)
#define pb push_back
#define IR iterator
typedef vector 
<int> vi;
const int MAXN = 103, MAXM = 11, MAXS = 100, INF = ~0U >> 2;
int n, m, S, A[MAXN], B[MAXS], T1[MAXS], F[MAXN][MAXS][MAXS], res;
bool F0[MAXN][MAXS];
vi P0[MAXN], P1[MAXS][MAXS];
void init()
{
     scanf(
"%d%d"&n, &m); getchar();
     re1(i, n) {A[i] 
= 0; re(j, m) A[i] |= ((getchar() == 'P'<< j); getchar();}
}
void dfs(int v, int ST)
{
    
if (v >= m) B[S++= ST; else {dfs(v + 3, ST | (1 << v)); dfs(v + 1, ST);}
}
void prepare()
{
    S 
= 0; dfs(00);
    re(i, S) {T1[i] 
= 0for (int j=B[i]; j; j-=j&(-j)) T1[i]++;}
    re1(i, n) re(j, S) 
if (!(~A[i] & B[j])) {P0[i].pb(j); F0[i][j] = 1;} P0[0].pb(S - 1); F0[0][S - 1= 1;
    re(i, S) re(j, S) 
if (!(B[i] & B[j])) re(k, S) if (!(B[i] & B[k]) && !(B[j] & B[k])) P1[i][j].pb(k);
}
void solve()
{
    re3(i, 
0, n) re(j1, S) re(j2, S) F[i][j1][j2] = -INF; F[0][S - 1][S - 1= 0;
    vi::IR vi_e0, vi_e1, vi_e2; 
int j0, j1, k, V;
    re(i, n) {
        vi_e0 
= P0[i].end(); if (i) vi_e1 = P0[i - 1].end(); else vi_e1 = P0[i].end();
        
for (vi::IR p=P0[i].begin(); p != vi_e0; p++)
            
for (vi::IR p_=P0[i ? i - 1 : i].begin(); p_ != vi_e1; p_++) {
                j0 
= *p; j1 = *p_;
                
if (!(B[j0] & B[j1])) {
                    vi_e2 
= P1[j0][j1].end();
                    
for (vi::IR p__ = P1[j0][j1].begin(); p__ != vi_e2; p__++) {
                        k 
= *p__;
                        
if (F0[i + 1][k]) {
                            V 
= F[i][j0][j1] + T1[k];
                            
if (V > F[i + 1][k][j0]) F[i + 1][k][j0] = V;
                        }
                    }
                }
            }
    }
    res 
= 0; re(i, S) re(j, S) if (F[n][i][j] > res) res = F[n][i][j];
}
void pri()
{
     printf(
"%d\n", res);
}
int main()
{
    init();
    prepare();
    solve();
    pri();
    
return 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>
            篠田优中文在线播放第一区| 久久久午夜精品| 国产精品亚洲成人| 国产精品久久久久久模特 | 久久国产精品电影| 午夜国产欧美理论在线播放| 午夜国产精品影院在线观看| 久久av一区二区三区漫画| 久久久久久网址| 99视频精品| 一片黄亚洲嫩模| 亚洲美女免费视频| 亚洲综合视频在线| 久久久五月婷婷| 亚洲国产精品成人va在线观看| 亚洲国产欧美久久| 亚洲欧美成人精品| 女生裸体视频一区二区三区 | 国产偷久久久精品专区| 在线观看国产日韩| 99视频一区| 久久久国产一区二区| 亚洲国产你懂的| 欧美一级淫片aaaaaaa视频| 蜜臀91精品一区二区三区| 欧美三区免费完整视频在线观看| 国产日韩欧美一区二区三区四区| 亚洲三级电影全部在线观看高清| 亚洲欧美制服另类日韩| 欧美成人精精品一区二区频| 夜夜嗨av一区二区三区网站四季av | 亚洲人成啪啪网站| 久久久久久久波多野高潮日日| 欧美日韩黄色大片| 亚洲国产成人午夜在线一区| 午夜精品www| 亚洲精品国产系列| 久久综合九色99| 国产一区二区久久| 亚洲综合色网站| 亚洲人屁股眼子交8| 久久久免费观看视频| 国产欧美在线| 亚洲影音先锋| aa国产精品| 欧美日韩国产在线一区| 亚洲精选一区二区| 欧美激情在线播放| 久久综合免费视频影院| 尤物yw午夜国产精品视频| 久久精品91久久久久久再现| 亚洲一区二区精品在线观看| 欧美午夜视频| 亚洲一区二区三区在线观看视频| 亚洲精品韩国| 欧美男人的天堂| 一区二区久久| 中文精品在线| 国产精品自拍视频| 久久不射网站| 久久精品五月婷婷| 在线视频国内自拍亚洲视频| 快she精品国产999| 另类专区欧美制服同性| 亚洲精品视频一区二区三区| 国产精品视频99| 国产视频一区在线观看一区免费| 一区二区三区欧美成人| 亚洲精品你懂的| 免费影视亚洲| 亚洲精品国产精品乱码不99按摩 | 亚洲国产美女精品久久久久∴| 麻豆国产va免费精品高清在线| 国内精品久久久久久影视8| 久久精品日韩| 久久频这里精品99香蕉| 亚洲激情av在线| 亚洲激情偷拍| 国产精品成人在线| 久久成人精品视频| 欧美成人69| 亚洲综合视频网| 久久国产欧美| 夜夜狂射影院欧美极品| 亚洲午夜视频在线| 有坂深雪在线一区| 亚洲狼人综合| 狠狠色伊人亚洲综合网站色| 欧美国产一区视频在线观看| 欧美连裤袜在线视频| 午夜精品久久久久久久99水蜜桃 | 在线日韩视频| 亚洲黄一区二区三区| 国产精品免费一区豆花| 老司机aⅴ在线精品导航| 欧美精品一区二区三区蜜臀| 欧美在线电影| 欧美精品情趣视频| 久久免费精品日本久久中文字幕| 欧美二区在线播放| 久久精品国产99精品国产亚洲性色 | 久久综合久久久| 欧美日韩亚洲高清一区二区| 久久久精品国产免费观看同学| 欧美久久久久久久| 久久久久久穴| 国产精品成人va在线观看| 欧美大片免费久久精品三p | 美女网站久久| 久久aⅴ国产紧身牛仔裤| 欧美电影免费观看高清完整版| 亚洲欧美在线磁力| 欧美日韩高清在线一区| 蜜乳av另类精品一区二区| 国产精品视频精品视频| 亚洲三级性片| 亚洲精品欧美在线| 欧美一区二区视频在线观看| 欧美精品一区二区三区四区 | 久久亚洲精品一区| 国产精品人人做人人爽人人添| 亚洲国产精品久久人人爱蜜臀| 国产美女精品人人做人人爽| 日韩视频免费看| 亚洲精品久久久蜜桃| 久久亚洲一区二区| 久久亚洲国产成人| 国产一区二区高清不卡| 亚洲欧美另类综合偷拍| 亚洲综合色噜噜狠狠| 欧美午夜精品一区| 在线亚洲免费| 亚洲在线视频观看| 国产精品午夜在线| 亚洲欧美三级伦理| 久久精品国产亚洲aⅴ| 国产亚洲亚洲| 久久久精品免费视频| 麻豆视频一区二区| 亚洲国产成人午夜在线一区 | 亚洲香蕉伊综合在人在线视看| 99在线精品视频在线观看| 欧美大片在线影院| 亚洲精品色图| 亚洲图片欧洲图片av| 国产精品毛片大码女人| 亚洲综合色在线| 久久精品国产一区二区三| 狠狠色狠色综合曰曰| 麻豆精品一区二区综合av| 欧美高清视频www夜色资源网| 亚洲激情视频在线观看| 欧美日韩福利在线观看| 亚洲一区二区在线视频| 久久精品五月| 亚洲国语精品自产拍在线观看| 欧美黄色影院| 亚洲一区二区视频在线| 久久综合久久综合久久综合| 亚洲激情啪啪| 国产精品久久久久9999| 久久国产日本精品| 亚洲激情成人在线| 欧美一区二区视频网站| 亚洲国产毛片完整版| 欧美性做爰毛片| 久久蜜桃资源一区二区老牛 | 亚洲精品久久久久中文字幕欢迎你| 一区二区三区毛片| 国产日韩欧美精品在线| 欧美大胆成人| 欧美亚洲一级| 亚洲美女在线一区| 先锋影院在线亚洲| 亚洲国产欧美另类丝袜| 国产精品久久二区| 欧美 日韩 国产 一区| 亚洲一区在线直播| 亚洲黄色一区| 噜噜噜噜噜久久久久久91 | 欧美不卡视频一区发布| 亚洲桃色在线一区| 欧美韩国一区| 欧美尤物巨大精品爽| 亚洲免费观看高清在线观看 | 一本色道久久99精品综合| 国产在线视频欧美一区二区三区| 欧美国产日韩一区| 久久久久久午夜| 午夜精品久久久久久久99热浪潮 | 亚洲日本va在线观看| 国产日韩欧美中文| 欧美日韩精品欧美日韩精品| 久久久久久夜精品精品免费| 亚洲图片激情小说| 日韩亚洲国产欧美| 亚洲国产精品久久久久秋霞蜜臀| 久久久综合精品| 欧美中文字幕| 午夜视频一区在线观看|