首先先要看懂题目,大意就是找到四个不同景点,在满足每次到达景点的距离不超过k+1k+1k+1(就是题目中所说的k次通达)的情况下,使四个景点的分数总和最大。
还要注意这道题的输入里面有一个小坑,景点分数只有n-1个,所以要从2开始输入刚开始因为这个样例没过
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
暴力解法:
1.先通过BFS求解点之间的最短距离
2.直接四层循环枚举A,B,C,DA,B,C,DA,B,C,D,需要满足的条件是距离不超过k+1k+1k+1
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
正解:
思路
写完暴力后就要开始想如何优化这个四层循环,我们注意到其实没有必要枚举DDD,可以先预处理满足条件的CCC(我们称为候选点),这样复杂度降为O(3n3)O(3n^3)O(3n3),那么同理,AAA也可以通过BBB的候选点来得到,这样复杂度就降为了O(9n2)O(9n^2)O(9n2)
解法:
1.跟暴力一样先BFS求点之间的最短距离
2.与暴力不同的是我们还要预处理BBB和CCC的候选点
3.循环遍历B,CB,CB,C,然后通过预处理好的候选点来求A,DA,DA,D,然后找最大值就行了