1 条题解

  • 0
    @ 2025-12-26 10:00:45

    题解

    知识点提炼

    动态规划优化

    核心解题思路

    思路1:利用特性(20pts)

    对于前20%20\%数据,x_i始终为0,y_i为0或1。如果跳过一个点有可能少走22距离。

    而跳过第一个点的跳过的花费为11,第二个点花费也为11,第三个点则花费为22,第四个点花费为44...故最多跳过两个点,跳更多的点并不会导致答案更优秀。

    考虑暴力地枚举不跳过点、跳过一个点、跳过相邻的两个点和跳过不相邻的两个点的四种情况,时间复杂度为O(n2)O(n^2)

    时间复杂度O(n2)O(n^2),期望得分2020分。

    思路2:01dfs(40pts)

    对于40%40\%的数据,n20n\leq 20 ,考虑01dfs枚举22n1n-1是否被删,在dfs终点计算当前01状态的花费,更新答案。

    时间复杂度O(n2n)O(n2^n)。期望得分4040分。

    思路3:动态规划(50pts)

    设立f[i][k]f[i][k]为到了i号点,且删了k个点的最小花费。则答案为f[n][k]f[n][k]取min。

    对于ii号点,枚举下一步去jj号点,则会跳过ji1j-i-1个点,f[i][k]f[i][k]状态可以转移至f[j][k+ji1]f[j][k+j-i-1],所需花费为原花费f[i][k]f[i][k]iijj的距离dis(i,j)dis(i,j)、新增删点花费为删掉k+ji1k+j-i-1个点的花费减去删掉kk个点的花费。如果花费小于f[j][k+ji1]f[j][k+j-i-1]则可更新之。

    时间复杂度O(n2)O(n^2)。期望得分6060分。

    思路4:动态规划优化(100pts)

    注意到0xi,yi100000\leq x_i,y_i\leq 10000,故最坏情况下不跳过点的花费为n100002n*10000\sqrt2,不超过21092*10^9

    故跳过点的数量不会超过3131次,否则至少存在一个方案所需花费更小:一个点也不跳过的方案。

    所以我们可以在动态规划时,对于ii号景点,只枚举后续的4040个景点进行dp即可。

    时间复杂度O(n4040)O(n*40*40)。期望得分100100分。

    本题易错点

    有可能在60%60\%部分分时无法想到动态规划的优化错失满分。

    有可能忽略11号点和nn号点不允许跳过的限制,得出错误的结果。

    信息

    ID
    68
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    (无)
    递交数
    60
    已通过
    15
    上传者