思路:這道題可以用dp寫也可以用優先佇列寫,我用的是優先佇列,首先就是將每一天的**sort排序,至於格外要支付k*k的費用只需要將陣列處理一下就好,a[i][j] = a[i][j]+2*j+1;
然後按天數把當天的所以糖果的**放入優先佇列,再將最先出隊的買了,這樣就可以保證費用少。
#include
using
namespace std;
int a[
310]
[310];
priority_queue<
int,vector<
int>
,greater<
int>
>q;
//定義乙個優先佇列,
intmain()
sort
(a[i]
,a[i]
+m);
for(
int j=
0;jfor(
int i=
0;i) sum +
= q.
top();
q.pop();
} cout<
return0;
}
ZOJ 3632 dp 優先佇列
上個禮拜學長講了優先佇列的說.emmmmmm.看著題解敲了一題.先m下。include include include include include includeusing namespace std struct gua 這裡手殘漏了個分號導致螺旋報錯 priority queueque in...
2017紀中11 8 購物 貪心 優先佇列
題面 這題有點像samjia2000出的三元組。考慮把物品按qi從小到大排序,那麼一定有乙個分界點,使得在這個點之前的物品要麼買pi要麼買qi,這個點之後的物品要麼買pi,要麼不買 可以想象一下如果之前有乙個x不買,之後有乙個買qy,買qx不買y一定更優 於是設s i 為使用至多k張優惠券買下1 i...
DP 硬幣購物
題意 一共有4種硬幣。面值分別為c1,c2,c3,c4。某人去商店買東西,去了tot次。每次帶di枚面值為ci的硬幣,買si的價值的東西。請問每次有多少種付款方法。思路 設f i 為不考慮硬幣限制下,買價值為i的物品的方案數。那麼很容易得出f j f j c 1 f j c 2 的遞推式。注意要推完...