HDU4628 狀態壓縮DP

2022-04-21 11:07:03 字數 1739 閱讀 3856

1/*2

狀態壓縮dp

3dp[ i ]:達到i狀態的最小step。

4題意:每次可以去掉乙個回文串,求最少幾步能取完。5*/

6 #include7 #include

8 #include9 #include10 #include11 #include12 #include13 #include14

using

namespace

std;

15 typedef long

long

ll;16

//typedef __int64 int64;

17const

int maxn = 18;18

const

int inf = 0x3f3f3f3f;19

const

double pi=acos(-1.0

);20

const

double eps = 1e-8;21

int dp[ 1

<

22char

s[ maxn ];

23int state[ 1

/回文的狀態

2425

bool judgeonezero( int ss,int

len )

33 ss /= 2

;34 indexofstring++;35}

36if( cc==1 ) return

true;37

intl,r;

38 l = 0

;39 r = cc-1;40

while( l<=r )

45return

true

;46 }//

判斷s是否是回文狀態

4748

int init_state( int

len )56}

57return

cnt;

58 } //

初始化回文的狀態

5960

bool judge( int cur,int nxt,int len )//

當前狀態為1,前一狀態必須為1

68if( nxt%2==0

)//前一狀態是0,當前狀態也必須是0

71if( cur%2==0&&nxt%2==1

)74 indexofstring++;

75 cur /= 2

;76 nxt /= 2;77

}78if( cc==1 ) return

true;79

intl,r;

80 l = 0

;81 r = cc-1;82

//printf("cc=%d\n",cc);

83while( l<=r )

88return

true;89

}9091int

main()

111}

112}

113*/

114for( int i=n-2;i>=0;i--)

119}

120}

121 printf("

%d\n

",dp[0

]);122

}123

return0;

124 }

view code

Hdu 3811 狀態壓縮 DP

題意 給定數n n 17 求乙個n位數,每位可選1 n中的乙個,且每位不同,並且滿足給定的條件,求方案數。給定條件為m個 x y 表示第x位為y的滿足要求。滿足m中的乙個條件即正確。演算法 dp 狀態壓縮 分析 首先不考慮條件的總方案數為n 我們先算不滿足條件的方案,因為m個條件之間是或者 關係,有...

hdu 1074 狀態壓縮dp

題目描述 有 n 門課程的作業,每門都有完成期限d,與完成所需時間c,若超過期限,1天扣1分。問完成這n門作業至少要扣多少分,並輸出扣分最少的做作業順序。思路 dp i 記錄完成狀態為i的情況下的資訊。完成所需時間,上乙個狀態,最小扣分 狀態方程 dp i min dp j cost j,i 從j狀...

hdu1565 dp狀態壓縮

題意 給你乙個n n的格仔的棋盤,每個格仔裡面有乙個非負數。從中取出若干個數,使得任意的兩個數所在的格仔沒有公共邊,就是說所取的數所在的2個格仔不能相鄰,並且取出的數的和最大。解題思路 先找出所有能成立的狀態,即 i i 1 0,表示每一行都沒有相鄰的,然後遍歷if q j 1 再進行動態更新,用上...