T1:裸裸的快排...
T2:贪心.
先按从小到大排序.
很明显对于前i个人中,如果i<=3很容易推出,大于三的时候其实也只有对应的两种渡河方法.
第一种:把前i-1个人渡过去的最优值+第一个人回来接他+再渡过去.
第二种:把前i-2个人渡过去的最优值+第一个人回来接他+把i和i-1两人渡过去+第1,2人渡河.
T3:最最简单的bfs即可.
T4:
f[i]表示以第i个数为结尾时的最优值,很明显,我们要枚举一个数j去更新i(当a[j]-a[i]的绝对值为1时)但这样子的效率为O(n²)
但仔细观察可以发现,更新j的时候,只需找前j个当中3个互不相等的数中最大的三个数来更新i即可.
因为假设有一个数x,则只有x-1和x+1不能更新x,再多出一个数,不管是什么数,都可以更新x了.
注意是互不相等,所以处理起来会有点麻烦,多细心点还有脑洞大点就可以了.