摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=1421刚开始想的时候,想转化成背包来做,但是不好表示,然后考虑到dp中的有几个相关元素,这里有两,一个是物品个数,一个是选择的对数,那么有了状态dp[i][j]表示前i件物品选择j对所付出的代价,那么对于第i件有选与不选两种,所以dp[i][j]=min((dp[i-2][j-1]+charge(weight[i-1],weight[i])),dp[i-1][j]);即这件物品要选的话那么前一件和他是一对的,则代价是他们两的代价加上dp[i-2][j-2],如果这件物品不选则dp[i-1][j],前i-1件选 阅读全文
摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=1176开始对dp有感觉了,就是能够覆盖所有的状态,而且要有状态转移方程,即递推关系。那么这题就是,利用dp【i】【j】表示在第i秒在位置j可以获得的最大面包数,那么他可能从前一秒的左边,或者右边,或者原地不动来,那么着就是状态了。对于0和10这两个点要特殊处理。因为第一秒在位置5,所以初始化的时候要把第一秒的初始化了。初始化: dp[1][4]=map[1][4]; dp[1][5]=map[1][5]; dp[1][6]=map[1][6];状态转移:dp[i][j]=max(m... 阅读全文