三分 貪心 Ahoi2014 宅男計畫

2022-03-27 09:32:39 字數 1106 閱讀 2457

傳送門

一看顯然是貪心(首先要把所有價效比低的食品扔掉,也就是保質期短還貴的東西)。但接下來我就懵了。。。居然要三分

據說沒什麼人能證出來。。(據說出題人要別人猜結論。。)既然說是,那我就信了。→_→

三分總共要多少次外賣。然後從便宜的食品開始買(把過期的過掉)。那麼該如何記錄呢。既然我們知道要來多少次,那麼每一次買的都是最優的話,那麼每次買的是一樣的。這樣我們可以記錄下已經把前多少天的食物買齊了,向後加天數即可。答案也就是來的次數×一次撐的天數。

有乙個細節:我們把買的食物在每乙個週期都買了n份,但可能導致保質期充足,剩下的錢足夠買幾個但不夠把所有週期都買過來一遍。這樣不同週期就會有變動。這時只需要把撐的總天數加上即可,而每個週期到底多少天了,並不用加,因為如果進行了「填縫」,那麼剩餘的錢不會再足以買後面的物品了。但如果只是因為保質期不夠了呢?因為是按**排的序,而且篩去了價效比不高的物品,所以後面的要麼不能再買了,要麼能夠重新覆蓋剛剛填的縫隙,所以就沒必要增加了。感謝神犇gxy

#pragma gcc optimize("o3")

#include

#include

#include

#include

#include

#define ll long long

using

namespace

std;

int n,tot;ll f,m,ans;

struct nodeb[205],a[205];

inline

bool cmp(node x,node y)

inline

bool cmp2(node x,node y)

if(s<=t)

}return sum;

}int main()

if(b[i].p>=b[i-1].p)continue;

a[++tot]=b[i];

}sort(a+1,a+tot+1,cmp2);

ll l=1,mid,mmid,r=m/(f+a[1].p),sum;

ll s1,s2;

while(l<=r)

else

}cout

<}

bzoj3874 宅男計畫 三分 貪心

題意 有許多種食品,每種有 保質期兩種屬性,乙個人有乙個數目的錢,求這個人可以活多久。如果資料範圍小一點那這個顯然可以 dp 然而 0 si 10 1 f,pi,m 10 1 n 200 我也很絕望啊 首先這個東西是個凸函式 為什麼?我不知道聯想生活實際 也就是存活天數是與送餐次數成凸函式 其實不是...

宅男計畫 單峰函式三分

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

NKOJ 1533 玩具(三分 貪心 單調佇列)

問題描述 bessie的生日快到了,她希望用d 1 d 100,000 70 的測試資料都滿足1 d 500 天來慶祝.奶牛們的注意力不會太集中,因此bessie想通過提供玩具的方式來使它們高興.她已經計算出了第i天需要的玩具數t i 1 t i 50 bessie的幼兒園提供了許多服務給它們的奶牛...