P1875 佳佳的魔法药水

题目描述

发完了 k 张照片,佳佳却得到了一个坏消息:他的 MM 得病了!佳佳和大家一样焦急 万分!治好 MM 的病只有一种办法,那就是传说中的 0 号药水 ……怎么样才能得到 0 号药 水呢?你要知道佳佳的家境也不是很好,成本得足够低才行……

题目描述:

得到一种药水有两种方法:可以按照魔法书上的指导自己配置,也可以到魔法商店里去

买——那里对于每种药水都有供应,虽然有可能价格很贵。在魔法书上有很多这样的记载:

1 份 A 药水混合 1 份 B 药水就可以得到 1 份 C 药水。(至于为什么 1+1=1,因为……这是魔

法世界)好了,现在你知道了需要得到某种药水,还知道所有可能涉及到的药水的价格以及

魔法书上所有的配置方法,现在要问的就是:1.最少花多少钱可以配制成功这种珍贵的药水;

2.共有多少种不同的花费最少的方案(两种可行的配置方案如果有任何一个步骤不同则视为 不同的)。假定初始时你手中并没有任何可以用的药水。

输入输出格式

输入格式:

第一行有一个整数 N,表示一共涉及到的药水总数。药水从 0~N­1 顺序编号,0 号药水就是 最终要配制的药水。

第二行有 N 个整数,分别表示从 0~N­1 顺序编号的所有药水在魔法商店的价格(都表示 1 份的价格)。

第三行开始,每行有 3 个整数 A、B、C,表示 1 份 A 药水混合 1 份 B 药水就可以得到 1 份 C 药水。注意,某两种特定的药水搭配如果能配成新药水的话,那么结果是唯一的。也就是 说不会出现某两行的 A、B 相同但 C 不同的情况。

输入以一个空行结束。

输出格式:

输出两个用空格隔开的整数,分别表示得到 0 号药水的最小花费以及花费最少的方案的个

数。

输入输出样例

输入样例#1:

7
10 5 6 3 2 2 3
1 2 0
4 5 1
3 6 2

输出样例#1:

10 3

说明

样例说明:

最优方案有 3 种,分别是:直接买 0 号药水;买 4 号药水、5 号药水配制成 1 号药水,直接 买 2 号药水,然后配制成 0 号药水;买 4 号药水、5 号药水配制成 1 号药水,买 3 号药水、6 号药水配制成 2,然后配制成 0。

dijkstra求最短路

再求方案数的时候分两种情况

1:两个原料药水合成的药水的原本最小花费等于原料药水的总花费,那么合成药水的方案数就需要在原本的基础上加上两个原料药水方案的乘积

2:两个原料药水合成的药水的原本最小花费小于原料药水的总花费,那么合成药水的方案数就等于两个原料药水方案的乘积

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define N 1010
#define maxn 9999999
using namespace std;
bool vis[N];
int n,x,y,z,ans1,ans2,sum[N],dis[N],f[N][N];
int read()
{int x=0,f=1; char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}return x*f;
}
int dijkstra()
{for(int i=1;i<=n;i++){int x,t=maxn;for(int j=1;j<=n;j++)if(!vis[j]&&dis[j]<t) x=j,t=dis[j];if(t==maxn) break;vis[x]=true;for(int j=1;j<=n;j++){if(!f[x][j]) continue;if(!vis[j]) continue;if(dis[f[x][j]]>t+dis[j]) dis[f[x][j]]=t+dis[j],sum[f[x][j]]=sum[x]*sum[j];else if(dis[f[x][j]]==t+dis[j]) sum[f[x][j]]+=sum[x]*sum[j];}}ans1=dis[1],ans2=sum[1];
}
int main()
{n=read();for(int i=1;i<=n;i++) dis[i]=read(),sum[i]=1;while(scanf("%d%d%d",&x,&y,&z)!=EOF){f[x+1][y+1]=z+1;f[y+1][x+1]=z+1;}dijkstra();printf("%d %d",ans1,ans2);return 0;
}

转载于:https://www.cnblogs.com/z360/p/7467946.html

洛谷—— P1875 佳佳的魔法药水相关推荐

  1. 洛谷P1875 佳佳的魔法药水

    P1875 佳佳的魔法药水 链接:https://www.luogu.org/problemnew/show/P1875 题目背景 发完了 k 张照片,佳佳却得到了一个坏消息:他的 MM 得病了!佳佳 ...

  2. 洛谷 P1875 佳佳的魔法药水(最短路) 题解

    题目来源: https://www.luogu.org/problemnew/show/P1875 题目描述: 题目背景 发完了 k 张照片,佳佳却得到了一个坏消息:他的 MM 得病了!佳佳和大家一样 ...

  3. P1875 佳佳的魔法药水

    P1875 佳佳的魔法药水 题目描述 发完了 k 张照片,佳佳却得到了一个坏消息:他的 MM 得病了!佳佳和大家一样焦急 万分!治好 MM 的病只有一种办法,那就是传说中的 0 号药水 --怎么样才能 ...

  4. 「Vijos 1285」「OIBH杯NOIP2006第二次模拟赛」佳佳的魔法药水

    佳佳的魔法药水 背景 发完了k张照片,佳佳却得到了一个坏消息:他的MM得病了!佳佳和大家一样焦急万分!治好MM的病只有一种办法,那就是传说中的0号药水--怎么样才能得到0号药水呢?你要知道佳佳的家境也 ...

  5. [NDK 佳佳的魔法药水]

    [题目]:佳佳的魔法药水 [来源]:NDK [关键字]:图论 构图 //================================================================ ...

  6. vijos 1282128312841285 佳佳的魔法照片/魔法药水/魔杖/魔法阵

    题目链接: https://vijos.org/p/1282 https://vijos.org/p/1283 https://vijos.org/p/1284 https://vijos.org/p ...

  7. vijosP1285 佳佳的魔法药水

    vijosP1285 佳佳的魔法药水 链接:https://vijos.org/p/1285 [思路] 图论思想. 很巧妙. 如A+B=C,将AB之间连边,边权为C,用以找相连物品与合成物. 用Dij ...

  8. Vijos - 佳佳的魔法药水(最短路)

    题目链接:https://vijos.org/p/1285 背景 发完了k张照片,佳佳却得到了一个坏消息:他的MM得病了!佳佳和大家一样焦急万分!治好MM的病只有一种办法,那就是传说中的0号药水--怎 ...

  9. 洛谷 P5740 【深基7.例9】最厉害的学生 题解

    Hello!这是我第一次在CSDN社区发题解呢(虽然我只是一个小菜鸡,只会C++,啥也不懂)! 这一次的题解我给大家带来了洛谷 函数与结构体部分的P5740 最厉害的学生这道题. 我们可以先审一审题目 ...

最新文章

  1. NLP重大突破?一文读懂XLNet“屠榜”背后的原理
  2. 北大林宙辰:追求机器学习研究的美感
  3. 【多线程】ThreadPoolExecutor类万字源码解析(注解超级详细)
  4. Jackson注解学习参考
  5. 数据库:数据库死机和掉电时如何让恢复数据
  6. VTK:将点转换为字形用法实战
  7. ASP.NET MVC项目的创建
  8. Could not find result map
  9. 蓝桥杯 java基础练习 回形取数
  10. mysql触发器对同一张表做操作_mysql的触发器同数据库 多表的数据操作
  11. pyqt5在mac os 安装
  12. 金三银四 | 吃透这套题,面试更有底气
  13. 博主个人用的duilib版本
  14. 字体靠右代码_html中怎么把文字往右移
  15. Twitter技术主管回怼马斯克!马斯克:He’s fired!
  16. 基于单幅图像的2D转3D算法研究(转)
  17. Minio(一) | 搭建Minio服务器(单节点)
  18. java计算机毕业设计网上宠物商城管理系统源码+系统+数据库+lw文档+mybatis+运行部署
  19. CreateCompatibleDC函数的使用
  20. Oracle如何限制非法调用包中过程

热门文章

  1. 原生 遍历_细品原生JS从初级到高级知识点汇总(三)
  2. html响应式布局media,JS中使用media实现响应式布局
  3. linux pbr模块安装,PBR with Linux :Linux Advanced Routing Traffic Control HOWTO
  4. import cycle not allowed_Cycle药物介绍醋酸群勃龙(2)
  5. java与与短路与_Java中短路运算符与逻辑运算符示例详解
  6. java juel表达式_activiti 自定义函数解析juel表达式
  7. java word打印_如何通过Java打印Word文档
  8. 编写运行tomcat后出现中文乱码的情况
  9. 清华校庆正当时,智能小车决赛日
  10. 第十五届智能车赛比赛 比赛组织参考文档