小店購物 JSOI2008 BZOJ 2260

2021-07-25 03:51:07 字數 1361 閱讀 4780

grant是乙個個體戶老闆,他經營的小店因為其豐富的優惠方案深受附近居民的青睞,生意紅火。小店的優惠方案十分簡單有趣。grant規定:在一次消費過程中,如果您在本店購買了精製油的話,您購買香皂時就可以享受2.00元/塊的***;如果您在本店購買了香皂的話,您購買可樂時就可以享受1.50元/聽的***……諸如此類的優惠方案就是說:如果您在本店購買了商品a的話,您就可以以p元/件的***格購買商品b(購買的數量不限)。有趣的是,你需要購買同樣一些商品,由於不同的購買順序,grant老闆可能會叫你付不同數量的錢。比如你需要一塊香皂(原價2.50元)、一瓶精製油(原價10.00元)、一聽可樂(原價1.80元),如果你按照可樂,精製油,香皂這樣的順序購買的話,grant老闆會問你要13.80元;而如果你按照精製油,香皂,可樂這樣的順序購買的話,您只需付13.50元。

現在該村的居民請你編寫乙個程式,告訴你grant小店商品的原價,所有優惠方案及所需的商品,計算至少需要花多少錢。不允許購買任何不需要的商品,即使這樣做可能使花得錢更少。

第一行為乙個整數n(1 < =n < =50),表示grant小店的商品種數。接下來是n行,其中第(i+1)行由乙個實數ci (0 < ci < =1000)和乙個整數mi (0<=mi<=100)組成,其間由乙個空格分隔,分別表示第i種商品的原價和所需數量。第(n+2)行又是乙個整數k,表示grant小店的優惠方案總數。接著k行,每行有二個整數a,b(1 < =a,b < =n)和乙個實數p(0 < =p < 1000),表示一種優惠方案,即如果您購買了商品a,您就可以以p元/件的***格購買商品b,p小於商品b的原價。所有優惠方案的(a,b)都是不同的。為了方便,grant不收分幣,所以所有**都不會出現分。

只有乙個實數,表示最少需要花多少錢。輸出實數須保留兩位小數。

410.00 1

1.80 1

3.00 0

2.50 2

21 4 2.00

4 2 1.50

15.50

如果一種物品要買的數量為0,則將其除去

每一種物品,除第一件外,都可用最低的**買到

#include #include #include using namespace std;

const double e=1<<30;

const int maxn=105,maxm=10005;

int a,b,c,m,n,root;

int k[maxn],lk[maxn]; double p,cost[maxn];

int u[maxm],v[maxm]; double w[maxm],ans;

int pre[maxn],f[maxn]; double mincost[maxn];

inline double mn (double &x,double &y) {

if (x

Luogu2792 JSOI2008 小店購物

luogu2792 jsoi2008 小店購物 重題 bzoj4349 最小樹形圖 有 n 個物品,每個物品有 c i 和所需個數 k i 所有物品必須恰好買 k i 個。有 m 種優惠方案給出 x,y,w 若買過至少一件 x 物品,則 y 物品只需 w 的 w,資料中所有 x,y 不同且 x ne...

Bzoj1013 Jsoi2008球形空間產生器

竟然會想去用隨機艹這道題。太年輕 實際上兩個點與座標列乙個方程,高斯消元解這n個方程組就好了。講道理隨機也可以過的吧?主要是不好找乙個單調的狀態來退火或者爬山 因為超出圓範圍外無限遠處到所有點距離也相等,但並不是圓心。大概可以先用到所有點距離和來爬一下山,最終點就肯定在圓裡,在小步小步的爬山,強制使...

BZOJ1042 HAOI2008 硬幣購物

description 硬幣購物一共有4種硬幣。面值分別為c1,c2,c3,c4。某人去商店買東西,去了tot次。每次帶di枚ci硬幣,買si的價值的東西。請問每次有多少種付款方法。input 第一行 c1,c2,c3,c4,tot 下面tot行 d1,d2,d3,d4,s output 每次的方法...