bzoj 2697 特技飛行 貪心

2021-08-09 22:19:22 字數 911 閱讀 4697

description

神犇航空開展了一項載客特技飛行業務。每次飛行長n個單位時間,每個單位時間可以進行一項特技動作,可選的動作有k種,每種動作有乙個刺激程度ci。如果連續進行相同的動作,乘客會感到厭倦,所以定義某次動作的價值為(距上次該動作的時間)*ci,若為第一次進行該動作,價值為0。安排一種方案,使得總價值最大。

input

第一行,兩個數,n和k,如上所述;

第二行,k個正整數,表示k種動作的ci值。

output

僅一行,乙個整數,表示最大總價值。

sample input

5 22 2

sample output

hint

資料規模及約定

對於10%的測試資料,n<=20,k<=3

對於全部的測試資料,1<=n<=1000,1<=k<=300,0<=ci<=1000。

傳送門考慮一下對於某乙個ci,

假設最前面放置的位置為x,最後面放置的位置為y,貢獻是(y-x)*ci

假如說在中間乙個位置z放置,那麼貢獻為 (z

−x)∗

ci+(

y−z)

∗ci=

(y−x

)∗ci

也就是說貢獻是不會變化的。

那麼更大的ci肯定盡量分開放,而且不會放2個以上的位置(只可能<=原來的解)

那麼乙個很簡短的貪心就出來了。

#include

using

namespace

std;

int n,k,c[305];

bool cmp(int a,int b)

int main()

printf("%d\n",ans);

return

0;}

bzoj2697 特技飛行 貪心

神犇航空開展了一項載客特技飛行業務。每次飛行長n個單位時間,每個單位時間可以進行一項特技動作,可選的動作有k種,每種動作有乙個刺激程度ci。如果連續進行相同的動作,乘客會感到厭倦,所以定義某次動作的價值為 距上次該動作的時間 ci,若為第一次進行該動作,價值為0。安排一種方案,使得總價值最大。第一行...

BZOJ 2697 特技飛行(貪心)

題意 神犇航空開展了一項載客特技飛行業務。每次飛行長n個單位時間,每個單位時間可以進行一項特技動作,可選的動作有k種,每種動作有乙個刺激程度ci。如果連續進行相同的動作,乘客會感到厭倦,所以定義某次動作的價值為 距上次該動作的時間 ci,若為第一次進行該動作,價值為0。安排一種方案,使得總價值最大。...

BZOJ2697 特技飛行 貪心

bzoj2697 好水好水的貪心。容易發現每種特技只表演兩次,多表演沒有意義,而且差距越長收益越大 然後就可以貪,最大的放兩端,次大的往裡,然後是第三大.證明很簡單,假設將兩個特技時間交換,那麼會產生交換距離乘以 c 的差值的貢獻,顯然就不優 include include include incl...