題目鏈結
原創的部落格
題意:超市裡有n個商品. 第i個商品必須在保質期(第di天)之前賣掉, 若賣掉可讓超市獲得pi的利潤。
每天只能賣乙個商品。
現在你要讓超市獲得最大的利潤。
n , p[i], d[i] 範圍都在10000以內 。
#include#include用另一種貪心的方法來做,先把所有產品按照利潤從大到小排序,然後這個把這個放在截止日期那天賣出,並做好標記,如果截至日期那天已經有其他產品占用了,那麼可以把這個產品賣出的時間往前推,直到找到可以賣的那一天並標記好。 按照這種思路提交,ac了,不過卻用了141 ms。#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define ll long long
#define mem(a,x) memset(a,x,sizeof(a))
#define se second
#define fi first
const ll mod=998244353
;const
int inf= 0x3f3f3f3f
;const
int n=4e5+5
;int
n;priority_queue
q;vector
v[n];
intmain()
int ans=0
;
for(int i=10005;i>=1;i--)
if(!q.empty())
}printf(
"%d\n
",ans);}}
用了這個方法之後,再回想了下並查集方法的**, 所謂的用並查集做,實際上是對上面那種方法的優化!
用並查集的關鍵之處是,我們知道按照上面那個方法,假設乙個產品a占用了乙個日期後,那麼如果下次又有乙個產品b和產品a的截止日期是相同的,但是那個日期以被占用了,所以就要往前移動1天,那麼就可以用並查集進行標記,在a占用了那個日期後,把a的截止日期指向前乙個日期,這樣的話,可以直接查詢到他要占用到哪乙個時間。 用了並查集優化後,時間為47ms。
---------------------
原文:
#include#include無並查集#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define ll long long
#define mem(a,x) memset(a,x,sizeof(a))
#define se second
#define fi first
const ll mod=998244353
;const
int inf= 0x3f3f3f3f
;const
int n=4e5+5
;int
n;//
vectorv[n];
intvis[n];
struct
node
a[n];
bool
cmp(node x,node y)
intmain()
sort(a+1,a+1+n,cmp);
int ans=0
;
for(int i=1;i<=n;i++)
else}}
}cout}}
#include#include+並查集#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define ll long long
#define mem(a,x) memset(a,x,sizeof(a))
#define se second
#define fi first
const ll mod=998244353
;const
int inf= 0x3f3f3f3f
;const
int n=4e5+5
;int
n;int
f[n];
struct
node
a[n];
bool
cmp(node x,node y)
int getf(int
x)
return
f[x];
}int
main()
sort(a+1,a+1+n,cmp);
int ans=0
;
for(int i=1;i<=n;i++)
}cout}}
Supermarket 並查集或貪心
題目大意 給你n個物品,每種物品都有乙個價值v和最晚 時間t,問你怎樣的順序 可獲得最大利潤?首先說貪心法 把物品按價值降序排序,然後從開始遍歷物品,如果這個物品在最晚期限那天可以 就在那天 並標記這天有物品 如果那天已經有物品 就向前找能 的第乙個時間,標記,當找不到能 的時間,則這個物品不能 因...
POJ1456 Supermarket 並查集版
並查集 題目傳送門 堆作法 貪心的想,我們盡量先把利潤高的商品安排了。假如把利潤高的物品安排在第 x 天,顯然比安排任何利潤比他低的商品在第 x 天更優。這就保證了我們先賣利潤高的物品的貪心正確性。另外,如果能盡量把安排的日子靠後就靠後,這樣擁有決策包含性的性質,這種貪心顯然是最優的。時間複雜度 o...
導遊 (並查集 貪心)
幫助mr.he找出所有遊客帶到目的地,且往返次數最少的路線,如果不能把遊客送到目的地,輸出 no 輸入格式 第一行兩個整數n和r,分別表示城市數量和道路數量,各城市編號為1.n。接下來的r行,每行3個整數 a b p,表示道路ab的最大載客量為p。最後有若干行,每包含3個整數 s d t,分別表示出...