151017上午的测试总结

来源:互联网 发布:curl命令 json 编辑:程序博客网 时间:2024/04/28 16:15

第一题

【题目及题号】letter superoj935
【题解】
dp七维分别表示第几个字母出现了几次的最大权值,然后对每个单词转移一下。
【易错点】

{注意从字母最多的状态开始转移,防止一个单词被使用多次。}

第二题

【题目及题号】highways superoj936
【题解】
法一:求最小生成树,然后得到它最大的边。
法二:二分一个解,大于它的不可用,小于等于该权值的可用,判断是否能够联通所有点。

{最小化最大问题(最大化最小问题)都可以考虑二分。}
{一个结论:最小生成树的最大边,就是连通图最小的最大边。}

第三题

【题目及题号】castle protecting superoj937
【题解】
f[i][j][0]表示当前用了j个炸弹且用一个炸弹炸当前一个格子
f[i][j][1]表示当前用了j个炸弹且用一个炸弹炸当前两个格子
f[i][j][2]表示当前用了j个炸弹且用两个炸弹炸该列两个格子

f[i][j][0] = min f[i-1][j-1][0~2]+1f[i-1][j][0]+save[anim[i].wz]-save[anim[i-1].wz];(anim[i].cs==anim[i-1].cs)f[i-1][j][2]+save[anim[i].wz]-save[anim[i-1].wz]f[i][j][1] = min f[i-1][j-1][0~2]+2f[i-1][j][1]+2*(save[anim[i].wz]-save[anim[i-1].wz]))f[i][j][2] = min f[i-1][j-2][0~2]+2f[i-1][j-1][0]+(save[anim[i].wz]-save[anim[i-1].wz])+1f[i-1][j][2]+2*(save[anim[i].wz]-save[anim[i-1].wz])

【考试ING】
考试的时候写了搜索和n^3的暴力。

这段时间做过的DP题来总结一下,
要降低DP的复杂度:
1.可以降低dp的维数,去掉一些没有意义的维度;
2.可以用两个数组分别记录同一状态的不同值共同限制转移;
3.增加维数记录信息使O(n)的转移变成O(1)。(例如此题)

题目 预估分数 实际分数 1 100 100 2 100 100 3 60 10
0 0