如何最大限度地


9

我看到了很多算法问题,这些问题总是导致以下问题:

你有一个整数数组H[1 ..ñ]0,则需要找到一世Ĵ这样最大化H[Ĵ]-H[一世]Ĵ-一世Øñ时间。

显然,Øñ2时间解决方案是考虑所有对,但是,有什么方法可以使的表达式最大化,Øñ而又不了解性质H吗?

我想到了一个想法是修复Ĵ,那么我们需要找到一世1个Ĵ-1个等于argmax一世{H[Ĵ]-H[一世]Ĵ-一世}argmax一世{H[Ĵ]Ĵ-H[Ĵ]一世-H[一世]Ĵ+H[一世]一世},由于Ĵ是固定的,因此我们需要argmax一世{-H[Ĵ]一世-ĴH[一世]+一世H[一世]}

但是,我看不出要摆脱内部Ĵ依赖项的方法。有什么帮助吗?


将一个解决方案是有帮助的?Øñ日志ñ
xskxzr

@xskxzr确认您是否有
AspiringMat

Answers:


5

这是一个解决方案。此答案的最后附加了由Willard Zhan指出O n Øñ日志ñØñ


Øñ日志ñ

为便于学习,分别表示F一世Ĵ=H[Ĵ]-H[一世]Ĵ-一世

定义,并且l i是最小索引,以使l i > l i 1h [ l i ] < h [ l i 1 ]。类似地,定义r 1 = n,并且r i是最大的索引,从而r i < r i 1h [ r i ] >1个=1个一世一世>一世-1个H[一世]<H[一世-1个][R1个=ñ[R一世[R一世<[R一世-1个。序列12 - [R 1- [R 2...很容易计算在 Ö Ñ 时间。H[[R一世]>H[[R一世-1个]1个2[R1个[R2Øñ

没有使得h [ i ] < h [ j ](即f i j > 0)的情况是微不足道的。现在,我们将重点放在非平凡的案件上。在这种情况下,要找到解决方案,我们只需要考虑这样的对。一世<ĴH[一世]<H[Ĵ]F一世Ĵ>0

对于每个使得ħ [ ] < ħ [ Ĵ ],让ü是最大的指数,使得ü,和v是最小的索引,使得- [R vĴ,然后ħ [ ù ] ħ [ ](否则ü + 1通过定义ù + 1一世<Ĵh[i]<h[j]uluivrvjh[lu]h[i]lu+1ilu+1,从而对相矛盾的定义),并且类似地ħ [ - [R v ] ħ [ Ĵ ]。因此 ħ [ - [R v ] - ħ [ ù ] [R v - ùħ [ Ĵ ] - ħ [ ] [R v - ùħ [uh[rv]h[j] 这意味着我们只需要考虑对ü[R v,其中ü < [R v

(h[rv]h[lu])(rvlu)(h[j]h[i])(rvlu)(h[j]h[i])(ji).
(lu,rv)lu<rv

表示,我们有以下引理。vü=精氨酸最高v ü<[RvFü[Rv

一个对,其中l u < r v,并且存在u 0使得u < u 0v < v u 0u > u 0v > v u 0),不能是最终的最佳解决方案。ü[Rvü<[Rvü0ü<ü0v<vü0ü>ü0v>vü0

证明。根据的定义,我们有 h [ r v u 0 ] h [ l u 0 ] r v u 0l u 0h [ r v ] h [ l u 0 ] r vlvü0H ^[- [Rv]-ħ[- [R v Ú 0 ] ü 0 +ħ[ ù 0 ][Rv-- [R v Ú 0+ħ[- [R v Û 0 ]r v u 0

H[[Rvü0]-H[ü0][Rvü0-ü0H[[Rv]-H[ü0][Rv-ü0
H[[Rv]-H[[Rvü0]ü0+H[ü0][Rv-[Rvü0+H[[Rvü0][Rvü0-H[[Rv][Rvü00。

v < v u 0)的情况下,注意h [ r v ] h [ r v u 0 ] < 0r vr v u 0 > 0,并且l u < l u 0h [ l u ] > hü<ü0v<vü0H[[Rv]-H[[Rvü0]<0[Rv-[Rvü0>0ü<ü0,我们有 H[ü]>H[ü0]

H[[Rv]-H[[Rvü0]ü+H[ü][Rv-[Rvü0> H[[Rv]-H[[Rvü0]ü0+H[ü0][Rv-[Rvü0

这意味着 ħ[ - [R v Ú 0 ]-ħ[ù ] [R v Ú 0 -ù>ħ[ - [R v ]-ħ[ù ] r v l u

H[[Rv]-H[[Rvü0]ü+H[ü][Rv-[Rvü0+H[[Rvü0][Rvü0-H[[Rv][Rvü0>0
H[[Rvü0]-H[ü][Rvü0-ü>H[[Rv]-H[ü][Rv-ü

因此l ur v是严格更好的解决方案。另一种情况的证明是相似的。ü[Rvü0ü[Rv

v/21个2Ø1个ü[Rvü=1个/2-1个v=v/2v/2+1个Ø2ü[Rvü=/2+1个/2+2v=1个v/2{/2[Rv/2Ø1个Ø2}


Øñ

Fü[Rv=-ü[Rvü>ü0v>v0Fü0[Rv0Fü0[RvFü[Rv0>Fü[Rv中号[Xÿ]:=-FX[RC-ÿ+1个C[R1个[R2[RC-ÿ+1个ÿ中号F


1
Fü[RvØñ日志ñFü[RvØñ
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.