BZOJ 2697: 特技飛行 貪心

2697: 特技飛行

Description

神犇航空開展了一項載客特技飛行業務。每次飛行長N個單位時間,每一個單位時間能夠進行一項特技動做,可選的動做有K種,每種動做有一個刺激程度Ci。若是連續進行相同的動做,乘客會感到厭倦,因此定義某次動做的價值爲(距上次該動做的時間)*Ci,若爲第一次進行該動做,價值爲0。安排一種方案,使得總價值最大。
spa

Input

  第一行,兩個數,N和K,如上所述;
  第二行,K個正整數,表示K種動做的Ci值。

Output

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

Sample Input

5 2
2 2

Sample Output

12blog

思路 :

  簡單的推一下咱們能夠發現一個動做的價值就是(最後一次的時間-第一次的時間)*c[i] 因此這就變成了一道貪心水題.
ip

#include <cstdio>
#include <algorithm>
int a[301];
bool cmp(int a, int b) {return a>b;}
int main() {
    int n, k;
    scanf("%d%d", &n, &k);
    int ans = 0;
    for(int i=0;i<k;i++)scanf("%d", &a[i]);
    std::sort(a, a+k, cmp);
    n--;
    int i=0;
    while(n>0 && i<k) {
        ans+=n*a[i];
        i++, n-=2;
    }
    printf("%d\n", ans);
}
相關文章
相關標籤/搜索