状态压缩dp。一开始想开个dp[2][1024][1024]的数组,显然开不下,而且也会超时。因此把状态对应放在另外一个数组s里。map[i]表示用二进制表示第i行的地势情况,1是高地,0是平原。用dp[i][j][k]表示第i行,达到状态s[j],且i-1行的状态是s[k]的最优解。状态转移方程为 dp[i][j][k]=max(dp[i][j][k],dp[i-1][k][p]+cnt[j]);满足状态转移方程的条件是 s[j]&map[i]==0,s[j]&s[k]==0,s[j]&s[p]==0,且dp[i-1][k][p]存在。//Memory:228K//T Read More
posted @ 2013-10-24 01:13 MoriMiya Views(215) Comments(0) Diggs(0)