摘要:
题意:给一个字符串,通过删除字符或者添加字符将它变成回文串。给出删除或添加每一个字符的费用,求最小费用。思路:刚开始学习dp,觉得dp最重要的就是发现问题与子问题的递推关系了。这里用dp[i][j]表示字符串从i到j变成回文串的最小花费。假设id[i] = id[j],则dp[i][j] = dp[i+1][j-1]。如果不相等,有dp[i][j] = min(dp[i+1][j] + cost[ id[i]-'a' ], dp[i][j-1] + cost[ id[j]-'a' ])。具体分析如下假设i到j构成的子串为akkk...kkkkd,有如下四种选择将 阅读全文
摘要:
这个题分类是dp,想了一会没有想出来,就去看别人题解了。发现别人题解全是暴力枚举= =。复杂度超过 N^2,但可能是剪枝的作用,没有超时。思路:将所有点按坐标由小到大排序。两两枚举点p1,p2,并判断其中坐标较小的点p1是否是该路径上青蛙跳至的第一个点(假设在p1之前还有一点,则可以根据p1和p2的距离算出p1前一点的坐标,判断该坐标是否在麦田内,若不在则说明p1是青蛙跳至的第一个点)。判定p1前一点坐标时,我原以为由于所有点的坐标都是排好序的(从小到大),则p1前一点的坐标必然更小,因此判定它是否在麦田内时只需要判断是否坐标都大于0,并不需要判断是否超坐标上限。但这种思路是错误的。见下图。上 阅读全文