250
题意:有n首不同的曲子,你唱每首曲子需要花费a的时间以及一个调整的时间b,调整的时间为此首歌的曲调减去上一首歌的曲调的绝对值。
思路:我们用dp[i][k]表示前i首歌只唱k首用的最小时间花费,最后拿所有的dp[i][k]和T做比较,满足条件则选取最大的k。这样的思路是没错的,但是...没注意到一种情况,dp[i][k]只要选了就保证序列定下来了,因为取的是绝对值,序列定下来的说明和时长a没关系,所以这时候要保证abs最小,又因为是从前往后推,所以只有排序后才能保证绝对值最小,有点贪心的意味。
500
思路:dp[i][k]表示i这个状态有k这种钥匙的数量,用位运算枚举所有的状态,后一个状态由前一个状态递推过来,dp[i][k],k有3种,但是因为开门只需要消耗红和绿(当满足的情况),白可充当红绿。对于到达这个状态,它之前所开的门消耗的钥匙和总共得到的钥匙是一样的,所以这时候我们就要尽量保证白钥匙最大,以保证结果最优。