bzoj3874 宅男計畫 三分 貪心

2022-03-27 02:06:03 字數 1088 閱讀 4780

題意:有許多種食品,每種有**、保質期兩種屬性,乙個人有乙個數目的錢,求這個人可以活多久。

如果資料範圍小一點那這個顯然可以$dp$……然而$0<=si<=(10^),1<=f,pi,m<=(10^),1<=n<=200$……我也很絕望啊……

首先這個東西是個凸函式(為什麼?我不知道聯想生活實際),也就是存活天數是與送餐次數成凸函式(其實不是嚴格單峰,但在本題可以忽略),那麼我們顯然可以三分求出最大函式值。

問題變為給出乙個$x$,如何求出乙個$y$。

根據貪心原則,保質期短**貴的直接扔掉,於是我們先預處理一下,預處理完之後我們就挨個購買,考慮這個東西每次可以購買的數量。注意最後可能還剩下一些錢夠買幾次但是不足夠每次都買,這一部分也要加以考慮。

1 #include 2 #include 3 #include 4 #include 5

using

namespace

std;

6const

int maxn=205;7

struct

food

8fin[maxn],sta[maxn];

11 inline bool comp(const food &x,const food &y)

1216 inline bool cmp(const food &x,const food &y)

1720

long

long m,f;int

p,n;

21 inline long

long f(long

long

val)

2233

if(fin[i].s>=day)

3438}39

return

ans;40}

41int

haha()

4257

for(long

long i=l;i<=r;i++)ans=max(ans,f(i));

58 printf("

%lld\n

",ans);59}

60int sb=haha();

61int main()

bzoj3874

BZOJ 3874 Ahoi2014 宅男計畫

題意 外賣店一共有n種食物,分別有1到n編號。第i種食物有固定的價錢pi和保質期si。第i種食物會在si天後過期。jyy是不會吃過期食物的。比如jyy如果今天點了乙份保質期為1天的食物,那麼jyy必須在今天或者明天把這個食物吃掉,否則這個食物就再也不能吃了。保質期可以為0天,這樣這份食物就必須在購買...

bzoj 3874 Ahoi2014 宅男計畫

故事背景 自從迷上了拼圖,jyy就變成了個徹底的宅男。為了解決溫飽問題,jyy 不得不依靠叫外賣來維持生計。問題描述 外賣店一共有n種食物,分別有1到n編號。第i種食物有固定的價錢pi和保質期si。第i種食物會在si天後過期。jyy是不會吃過期食物的。比如jyy如果今天點了乙份保質期為1天的食物,那...

bzoj 3874 Ahoi2014 宅男計畫

看到這一題題面,莫名想到了 蔬菜 於是莫名開始恐慌。考場上只知道有個貪心計算快遞小哥來一次,我要買能活n天的最小花費,卻沒想到還有乙個三分法來列舉快遞小哥來的次數!首先我們可以腦補一下,快遞小哥來的次數,和宅男活的總天數是成乙個二次函式關係的。就像快遞小哥來的次數少,那宅男多數的錢只能分到這麼少的購...