1/*2view code狀態壓縮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 }
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 再進行動態更新,用上...