P7287 EZEC 5 魔法 貪心 二分

2021-10-17 10:42:59 字數 1054 閱讀 7021

一開想列舉答案區間[l,

r]

[l,r]

[l,r

],發現這樣列舉會炸。

正解是列舉操作次數,而且注意到最優的操作肯定是先+

++再乘的。

所以我們可以列舉乘的次數,然後二分加的次數,至於找最大區間就可以貪心,o(n

)o(n)

o(n)

求出最大欄位和即可。

注意二分的下界是0,上界不要太大,不然會爆lon

glon

glong\ long

longlo

ng,也不要太小。

時間複雜度:o(n

log2

s)

o(nlog^2s)

o(nlog

2s)

#include

using

namespace std;

typedef

long

long ll;

const

int n=

1e5+

5,m=

2e4+

5,inf=

0x3f3f3f3f

,mod=

1e9+7;

#define mst(a,b) memset(a,b,sizeof a)

#define pii pair

#define fi first

#define se second

#define pb push_back

int n,a,b,s;

int a[n]

;bool

check

(ll x,ll y)

return

false;}

intmain()

if(check

(l,mu)

) ans=

min(ans,

1ll*l*a+

1ll*i*b);}

printf

("%lld\n"

,ans)

;return0;

}