BZOJ 2697 特技飛行(貪心)

2021-09-07 23:11:56 字數 2229 閱讀 9791

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

思路:首先,每個動作至少要執行兩次才有效,因為第一次的價值為0。而且,執行次數大於兩次時就等價於只執行了第一次和最後一次。所以只需要考慮執行兩次的即可。對於連續的四個時間i,i+1,i+2,i+3,設兩個動作(刺激程度為x,y,x>=y)分別在 i和i+2, i+1和i+3執行,則總價值為x*2+y*2。若x在i和i+3 ,y在i+1和i+2執行,則總價值為x*3+y,x*3+y>=x*2+y*2,因此最優情況下不會出現交叉情況,因此只需要將刺激度排序,大的放在兩端執行。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define max(x,y) ((x)>(y)?(x):(y))

#define min(x,y) ((x)<(y)?(x):(y))

#define abs(x) ((x)>=0?(x):-(x))

#define i64 long long

#define u32 unsigned int

#define u64 unsigned long long

#define clr(x,y) memset(x,y,sizeof(x))

#define clr(x) x.clear()

#define ph(x) push(x)

#define pb(x) push_back(x)

#define len(x) x.length()

#define sz(x) x.size()

#define pi acos(-1.0)

#define sqr(x) ((x)*(x))

#define mp(x,y) make_pair(x,y)

#define eps 1e-10

#define for0(i,x) for(i=0;i

#define for1(i,x) for(i=1;i<=x;i++)

#define for(i,a,b) for(i=a;i<=b;i++)

#define forl0(i,a) for(i=a;i>=0;i--)

#define forl1(i,a) for(i=a;i>=1;i--)

#define forl(i,a,b)for(i=a;i>=b;i--)

#define rush() int cc;for(scanf("%d",&cc);cc--;)

#define rush(n)  while(scanf("%d",&n)!=-1)

using namespace std;

void rd(int &x)

void rd(i64 &x)

void rd(u64 &x)

void rd(u32 &x)

void rd(double &x)

void rd(int &x,int &y)

void rd(i64 &x,i64 &y)

void rd(u32 &x,u32 &y)

void rd(double &x,double &y)

void rd(int &x,int &y,int &z)

void rd(i64 &x,i64 &y,i64 &z)

void rd(u32 &x,u32 &y,u32 &z)

void rd(double &x,double &y,double &z)

void rd(char &x)

void rd(char *s)

void rd(string &s)

void pr(int x)

void pr(int x,int y)

void pr(i64 x)

void pr(u32 x)

void pr(u64 x)

void pr(double x)

void pr(char x)

void pr(char *x)

void pr(string x)

bzoj2697 特技飛行 貪心

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

bzoj 2697 特技飛行 貪心

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

BZOJ2697 特技飛行 貪心

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