思路求证
  • 板块P1433 吃奶酪
  • 楼主RichardCgy
  • 当前回复11
  • 已保存回复11
  • 发布时间2022/11/22 23:09
  • 上次更新2023/10/27 01:52:56
查看原帖
思路求证
679742
RichardCgy楼主2022/11/22 23:09

想了一个时间复杂度四次方,空间复杂度立方的思路,但是代码写出来却只能得10分(悲)

不知道是不是思路不严谨的原因,求助dalao找漏洞

思路如下:

给每个输入的点标号,从11号标到nn号点

先建立一个三维数组aa,储存的是从编号是第一个空的点出发,最终到达编号是第二个空的点,其中除了起点以外一共经历的点是第三个空的数字减去1

先计算第三个空为11的一层,根据计算距离公式,很容易就能算出来。

然后定义个变量从22循环到n1n-1,变量名字姑且取名为ii吧,含义就是除了起点以外经过ii个点到终点

然后,每一个最短的路径,其中经过的点记为p[1]p[1]p[2]p[2],…,p[i1]p[i-1],p[i]p[i](终点),路径可以分解为从p[1]p[1]p[i1]p[i-1]的路径加上p[i1]p[i-1]p[i]p[i]的路程,显而易见,如果p[i1]p[i-1]被确定下来,前面一段如果不是最短的路线,整个搞出来必定绕远路。

所以暴力枚举出一个p[i1]p[i-1]使得这个路径达到最短,花线性的时间;每个ii的取值要枚举平方阶的起点终点组合,每层是立方阶时间;枚举线性阶的ii的取值,总复杂度为四次方,存中间过程,用立方的空间。

最终求出想要的结果:从一个起点出发,经历n1n-1个点达到终点(不算起点),枚举起点终点距离加(0,0)(0,0)到起点距离,取最小值,得到答案。

然而我只得了10分,初步认为思路不严谨,待会把代码发出来,求调。

2022/11/22 23:09
加载中...