傳送門
一看顯然是貪心(首先要把所有價效比低的食品扔掉,也就是保質期短還貴的東西)。但接下來我就懵了。。。居然要三分
據說沒什麼人能證出來。。(據說出題人要別人猜結論。。)既然說是,那我就信了。→_→
三分總共要多少次外賣。然後從便宜的食品開始買(把過期的過掉)。那麼該如何記錄呢。既然我們知道要來多少次,那麼每一次買的都是最優的話,那麼每次買的是一樣的。這樣我們可以記錄下已經把前多少天的食物買齊了,向後加天數即可。答案也就是來的次數×一次撐的天數。
有乙個細節:我們把買的食物在每乙個週期都買了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的幼兒園提供了許多服務給它們的奶牛...