状压dp小结

本文详细介绍状态压缩动态规划的原理及应用技巧,包括状态压缩的方法、状态优化策略、状态转移方程构建、正推与反推的使用场景以及边界条件设置等关键环节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

状态压缩dp 

1)首先是状态的压缩。一般采用二进制,有时候会用三进制或是其他的,根据每个点状态的个数。像travelling那道,每条路径最多可以走两遍所以就用0,1,2来存储每个点的状

态。要会用各种位运算。

像看相邻元素不相邻用'<<'比较等等。

2)状态的优化,有时候可以预处理一些状态,仅将合理状态保存下来,corn fields.

3)找状态。和矩阵快速幂差不多,一般来说看他和上面的几个状态有联系就用几维的,抓住联系点。corn fields,与上面的一行有联系,所以记录下此行的状态s,找出与上一行的联

系,dp[s][i]=sum(dp[s1][i-1]),s与s1满足一些条件;  炮兵阵地,与上面的两行都有联系,所以记录下当前行的状态s1和上一行的状态s2,dp[i][s1][s2]=max(dp[i][s1][s2],dp[i-1][s2]

[s3]+num[s1]);

4)正推和反推。像travelling,以当前的i为起点,看所能到达的点,如果该点已经访问了两次就不再访问,否则访问。这样会更简单。

5)一定要注意找好边界条件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值