每日一題 Supermarket

2021-10-14 12:02:03 字數 1080 閱讀 9780

supermarket

題目大意:

超市有n種商品,每個商品都有乙個利潤和保質期,超市每天只可以賣一種商品,求超市在保質期內賣出商品可獲得的最大利益。

思路:

貪心+二叉堆優化

在最大的保質期時間內找出利潤最大的商品賣掉,這個貪心思路是正確的,我們會發現我們的每乙個選擇都會被商品的保質期影響,即我們必須在商品的保質期內賣出商品,所以我們可以將保質期與可選擇的次數相結合,得到以下方法:

將每種商品的保質期按從小到大順序排序。

使用小根堆維護已經選擇商品的價值,然後繼續選擇商品,這時會有這兩種情況:

1.當前商品的保質期大於已經選擇商品的次數,直接將此商品加入選擇之中;

2.當前商品的保質期等於已經選擇商品的次數,將這個商品的價值與小根堆的堆頂作比較,如果大於即替換,否則不變。

因為每次都選擇最優的選項,保證了演算法的正確性。**:

#includeusing namespace std;

#define fi first

#define se second

#define pb push_back

#define mp make_pair

#define lowbit(x) x&(-x)

typedef long long ll;

typedef pairpii;

typedef pairpll;

const int n = 1e4+5;

const ll mod = 1e9+7;

const int inf = 0x3f3f3f3f;

const double eps =1e-9;

const double pi=acos(-1.0);

const int dir[8][2]=;

ll qpow(ll x,ll y)

return ans%mod;

}int p[n],t[n],c[n];

bool cmp(int x,int y)

每日一題 1

題目詳情 peter喜歡玩數字遊戲,但數獨這樣的遊戲對他來說太簡單了,於是他準備玩乙個難的遊戲。遊戲規則是在乙個n n的 裡填數,規則 對於每個輸入的n,從左上角開始,總是以對角線為起點,先橫著填,再豎著填。這裡給了一些樣例,請在樣例中找到規律並把這個n n的 列印出來吧。輸入描述 多組測試資料 資...

每日一題2018 3 21

leetcode 2 模擬十進位制運算考察單鏈表基本操作。題無難點,個人基礎需要提高。definition for singly linked list.struct listnode class solution while p while q if shi val s next null ret...

每日一題2018 3 22

leetcode 03 最長不重複子串 第一反應就是動態規劃。看到了網上的方法一。直接把問題簡化為找兩個重複字元間的最長距離,太巧妙了!class solution if i idx max locs s i i return max ling老師的方法二 仍舊轉化為動態規劃,但是為節省空間不再開個...