https://www.luogu.org/problem/show?pid=2792

题目背景

JSOI集训队的队员发现,在他们经常活动的集训地,有一个小店因为其丰富的经营优惠方案深受附近居民的青睐,生意红火。

题目描述

小店的优惠方案十分简单有趣:

一次消费过程中,如您在本店购买了精制油的话,您购买香皂时就可以享受2.00元/块的优惠价;如果您在本店购买了香皂的话,您购买可乐时就可以享受1.50元/听的优惠价......诸如此类的优惠方案可概括为:如果您在本店购买了商品A的话,您就可以以P元/件的优惠价格购买商品B(购买的数量不限)。

有趣的是,你需要购买同样一些商品,由于不同的买卖顺序,老板可能会叫你付不同数量的钱。比如你需要一块香皂(原价2.50元)、一瓶精制油(原价10.00元)、一听可乐(原价1.80元),如果你按照可乐、精制油、香皂这样的顺序购买的话,老板会问你要13.80元;而如果你按照精制油、香皂、可乐这样的顺序购买的话,您只需付13.50元。

该处居民发现JSOI集训队的队员均擅长电脑程序设计,于是他们请集训队的队员编写一个程序:在告诉你该小店商品的原价,所有优惠方案及所需的商品后,计算至少需要花多少钱(不允许购买任何不必要的商品,即使这样做可能使花的钱更少)。

输入输出格式

输入格式:

输入文件第一行为一个整数n(1<=n<=50),表示小店的商品总数。

接下来是n行,其中第(i+1)行由一个实数ci(0<ci<=1000)和一个整数mi(0<=mi<=100)组成,其间由一个空格分隔,分别表示第i种商品的原价和所需数量。第(n+2)行又是一个整数k,表示小店的优惠方案总数。

接着k行,每行有二个整数A,B(1<=A,B<=n)和一个实数P(0<=P<1000),表示一种优惠方案,即如果您购买了商品A,您就可以以P元/件的优惠价格购买商品B,P小于商品B的原价。所有优惠方案的(A,B)都是不同的。为了方便老板不收分币,所以所有价格都不出现单位分。

输出格式:

输出只有一个实数,表示最少需要花多少钱。输出实数须保留两位小数。

输入输出样例

输入样例#1:

4
10.00 1
1.80 1
3.00 0
2.50 2
2
1 4 2.00
4 2 1.50

输出样例#1:

15.50

不需要买的商品去掉跑一遍最小树形图作为第一次买每个商品的花费然后所有的商品就可以以最低价买下来
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 52
#define M 100001
#define inf 2e9
using namespace std;
int pre[N],vis[N],col[N];
int n,m,V,E;
int dy[N],sum[N];
double in[N],minn[N];
struct node
{int u,v;double w;
}e[M+N];
double directed_MST()
{double ans=0;int cirnum,to,root=0;while(1){for(int i=0;i<V;i++) in[i]=inf;for(int i=1;i<=E;i++){if(in[e[i].v]>e[i].w && e[i].u!=e[i].v){in[e[i].v]=e[i].w;pre[e[i].v]=e[i].u;}}cirnum=0;memset(vis,-1,sizeof(vis));memset(col,-1,sizeof(col));in[root]=0;for(int i=0;i<V;i++){ans+=in[i];to=i;while(vis[to]!=i && col[to]==-1 && to!=root){vis[to]=i;to=pre[to];}if(col[to]==-1 && to!=root){for(int nt=pre[to];to!=nt;nt=pre[nt])col[nt]=cirnum;col[to]=cirnum++;}}if(!cirnum) return ans;for(int i=0;i<V;i++) if(col[i]==-1) col[i]=cirnum++;for(int i=1;i<=E;i++){to=e[i].v;e[i].u=col[e[i].u];e[i].v=col[e[i].v];if(e[i].u!=e[i].v) e[i].w-=in[to];} V=cirnum;root=col[root];}    return ans;
}
int main()
{scanf("%d",&n);double p; int w; for(int i=1;i<=n;i++){scanf("%lf%d",&p,&w);if(w){dy[i]=++V;    E++;e[E].u=0; e[E].v=i; e[E].w=p;sum[V]=w-1;minn[V]=p;}}scanf("%d",&m);int u,v;while(m--){scanf("%d%d%lf",&u,&v,&p);if(!dy[u] || !dy[v]) continue;E++;e[E].u=dy[u]; e[E].v=dy[v]; e[E].w=p;minn[dy[v]]=min(minn[dy[v]],p);}V++;double ans=0;for(int i=1;i<V;i++) ans+=sum[i]*minn[i];ans+=directed_MST();printf("%.2lf",ans);
}

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/7435667.html

JSOI2008 小店购物相关推荐

  1. 3年5000家,苏宁小店如何立足“中国第一O2O社区小店”?

    进入2018年,整个零售业步入到深度整合之年,开春以来,各家巨头纷纷出场布局.3月21日,成都春糖会期间,苏宁易购大快消战略布局发布会召开,这是苏宁易购大快消事业群首次以集体的形象对外亮相.作为掌舵人 ...

  2. 快手小店电脑版_微信PC版更新!支持在小程序中使用微信支付 | 一周资讯

    小程序1. 微信PC版更新,支持在小程序中使用微信支付.12月19日,微信PC端推出内测版2.7.2.73,新版本支持以下新功能:新增看一看精选内容,新的订阅号浏览体验,支持在小程序中使用微信支付.( ...

  3. 微信与php什么区别,微信小店和微信小程序的区别是什么?

    区别:微信小店的功能比较少,只拥有基本的商城购物功能,没有营销功能,因而只适合不需要营销推广的个人开店:而小程序则是支持各种功能开发,可以开发商城小程序,也可以开发各种营销推广功能,能够满足商家的多功 ...

  4. 星起航长期看好抖音小店的潜力

    在今年的抖音大会上,抖音提出了"兴趣电商"的概念.很多人把它解读为大数据把自己喜欢的产品推荐给你.道理是这么个道理,关键是细节.就好像大家也都知道抖音是基于算法推荐,将短视频与用户 ...

  5. 星起航:抖音小店如何提升店铺复购率

    一个商品的复购成本一定要远低于流量的获取成本.在互联网上,流量只会越来越贵,这是永恒的真理.如何快速提高抖音小店的复购率? 1.主页预告 复购率可以说是每一个优秀商家的核心竞争力,商家的首页就是最好的 ...

  6. 一家 50 平米小店的老板,如何用社群打垮平台电商?

    你不得不改变经营方式,去适应新时代的消费习惯. 我尽量压缩篇幅长度,快速的把观念理清,再把一些关键的方法提供给新零售时代里的开店.创业者. 先整理重点: 本地生活圈服务,主要有两种特征: 1.聚焦在物 ...

  7. 星起航:抖音小店体验分低怎么办,如何提高店铺体验评分?

    店铺体验分是一个非常重要的因素,它影响着店铺的方方面面.体验评分可以引导老客户的二次转化和新客户的下单.体验评分是顾客评判店铺.产品的标准.如果体验分数低,你给客户的信任就会越来越低,从而影响转化率. ...

  8. 抖音小店VS淘宝店铺,哪个更有优势?

    最近有很多小伙伴来问我,做网店到底是选择淘宝还是抖店呢?嘉禾贝创今天就先把淘宝店铺和抖音小店做一个对比,分析一下双方的优劣势,让小伙伴更方便选择. 随着电商行业的不断发展,各式各样的电商平台如雨后春笋 ...

  9. 抖音小店如何上传商品?提升精选联盟排名的4大秘籍丨国仁网络

    曾有这样的一句话对做互联网近年来的发展有一个概括,十年前做淘宝早已身价过亿,5年前做自媒体的人已经早已财富自由,三年前做直播的大学生已经月入过十万.雷军曾说过站在风口上猪都会飞起来. 那么新的风口又在 ...

最新文章

  1. 51单片机可以做什么实用的产品?
  2. ubuntu10右键脚本中增加发送到命令
  3. python用input输入列表_Python如何使用input函数获取输入
  4. 虚拟机的管理(libvirtd)、移植和快照
  5. 雪饮者 决策树系列(二)决策树应用
  6. mysql limit报错_mysql limit 附近老是报错,求帮助!
  7. 设置JTree树形结构文字的颜色以及文字背景颜色的方法_-Chaz-_新浪博客
  8. 中国浙江省动漫产业发展方向探析及投资决策建议报告2021-2027年
  9. java线程之可重入锁
  10. 地铁客流量分析可视化演示系统(附代码)
  11. 使用jpedal解析PDF到XML
  12. VUE3.X——获取dom元素
  13. word文档生成方案
  14. 企业邮箱如何设置邮件模板
  15. Mysql 杂文记事
  16. 深入Linux设备驱动程序内核机制- 扫描版-有书签目录40M
  17. 程序人生:每天工作的第一个小时,做什么?
  18. SUMO中车辆需求建模方法(rou.xml)
  19. Spring-setter注入和构造器注入
  20. Java研发团队高效能规范

热门文章

  1. 【背包DP练习】洛谷 P5020货币系统 P1757通天之分组背包 P1064[NOIP2006 提高组]金明的预算方案 P5322 [BJOI2019]排兵布阵
  2. 【微信小程序】云函数入门(保姆级别)
  3. html怎么做成正方形符号,javascript – Highcharts:使图例符号为正方形或矩形
  4. c语言游戏经典案例,C语言_编游戏案例精编.doc
  5. python-GDAL之空间数据处理-自带工具集
  6. Unity FPS显示工具
  7. 人工智能项目的伦理审查
  8. intersect 相交 范围_关于CAD二次开发中(范围线自相交)相交线的问题
  9. (转载自新华网)蓄势数载业初就 | 水下悬浮隧道项目一瞥
  10. 支付机构违规已成常态 盛付通再次被央行处罚