洛谷P1875 佳佳的魔法药水
P1875 佳佳的魔法药水
链接:https://www.luogu.org/problemnew/show/P1875
题目背景
发完了 k 张照片,佳佳却得到了一个坏消息:他的 MM 得病了!佳佳和大家一样焦急 万分!治好 MM 的病只有一种办法,那就是传说中的 0 号药水 ……怎么样才能得到 0 号药 水呢?你要知道佳佳的家境也不是很好,成本得足够低才行……
题目描述
得到一种药水有两种方法:可以按照魔法书上的指导自己配置,也可以到魔法商店里去 买——那里对于每种药水都有供应,虽然有可能价格很贵。在魔法书上有很多这样的记载:
1 份 A 药水混合 1 份 B 药水就可以得到 1 份 C 药水。(至于为什么 1+1=1,因为……这是魔 法世界)好了,现在你知道了需要得到某种药水,还知道所有可能涉及到的药水的价格以及 魔法书上所有的配置方法,现在要问的就是:1.最少花多少钱可以配制成功这种珍贵的药水;
2.共有多少种不同的花费最少的方案(两种可行的配置方案如果有任何一个步骤不同则视为 不同的)。假定初始时你手中并没有任何可以用的药水。
输入输出格式
输入格式:
第一行有一个整数 N(N<=1000),表示一共涉及到的药水总数。药水从 0~N1 顺序编号,0 号药水就是 最终要配制的药水。
第二行有 N 个整数,分别表示从 0~N1 顺序编号的所有药水在魔法商店的价格(都表示 1 份的价格)。
第三行开始,每行有 3 个整数 A、B、C,表示 1 份 A 药水混合 1 份 B 药水就可以得到 1 份 C 药水。注意,某两种特定的药水搭配如果能配成新药水的话,那么结果是唯一的。也就是 说不会出现某两行的 A、B 相同但 C 不同的情况。
输入以一个空行结束。
输出格式:
输出两个用空格隔开的整数,分别表示得到 0 号药水的最小花费以及花费最少的方案的个 数。
输入输出样例
7 10 5 6 3 2 2 3 1 2 0 4 5 1 3 6 2
10 3
说明
样例说明:
最优方案有 3 种,分别是:直接买 0 号药水;买 4 号药水、5 号药水配制成 1 号药水,直接 买 2 号药水,然后配制成 0 号药水;买 4 号药水、5 号药水配制成 1 号药水,买 3 号药水、6 号药水配制成 2,然后配制成 0。
题解:记录最小路径方案数,因为不会出现某两行的 A、B 相同但 C 不同的情况,所以最烦的建边问题就解决了,要两个都配方更新,才能拿去更新,后面也不会重复利用
#include<bits/stdc++.h> using namespace std; const int maxn = 1005, inf = 100000008; int dis[maxn], cnt[maxn], cp[maxn][maxn], n; bool vis[maxn]; #define For(a, b, c) for(int a = b; a <= c; a++) struct Node{int v, w;bool operator < (const Node &a)const {return a.w < w;} }; void dij(){priority_queue <Node> Q;For(i, 1, n) Q.push((Node) {i, dis[i]});For(i, 0, n)cnt[i] = 1;while(!Q.empty()){int u = Q.top().v;Q.pop();if(vis[u])continue;vis[u] = 1;For(i, 1, n)if(cp[u][i] != -1 && vis[i]){if(dis[cp[u][i]] == dis[u] + dis[i]){cnt[cp[u][i]] += cnt[u] * cnt[i];// printf("%d %d %d %d %d \n",u,i,cp[u][i],dis[cp[u][i]],cnt[cp[u][i]]); Q.push((Node) {cp[u][i], dis[cp[u][i]]});}if(dis[cp[u][i]] > dis[u] + dis[i]){dis[cp[u][i]] = dis[u] + dis[i];cnt[cp[u][i]] = cnt[u] * cnt[i];// printf("%d %d %d %d %d \n",u,i,cp[u][i],dis[cp[u][i]],cnt[cp[u][i]]); Q.push((Node) {cp[u][i], dis[cp[u][i]]});}}}} int main(){scanf("%d",&n);For(i, 1, n)scanf("%d",&dis[i]);For(i, 1, n)For(j, 1, n)cp[i][j] = -1;int a, b, c;while(scanf("%d%d%d",&a, &b, &c) != EOF){cp[a+1][b+1] = cp[b+1][a+1] = c+1;}//cout<<"LLLL"; dij();cout<<dis[1]<<" "<<cnt[1]; }
View Code
转载于:https://www.cnblogs.com/EdSheeran/p/9142387.html
洛谷P1875 佳佳的魔法药水相关推荐
- 洛谷—— P1875 佳佳的魔法药水
P1875 佳佳的魔法药水 题目描述 发完了 k 张照片,佳佳却得到了一个坏消息:他的 MM 得病了!佳佳和大家一样焦急 万分!治好 MM 的病只有一种办法,那就是传说中的 0 号药水 --怎么样才能 ...
- 洛谷 P1875 佳佳的魔法药水(最短路) 题解
题目来源: https://www.luogu.org/problemnew/show/P1875 题目描述: 题目背景 发完了 k 张照片,佳佳却得到了一个坏消息:他的 MM 得病了!佳佳和大家一样 ...
- P1875 佳佳的魔法药水
P1875 佳佳的魔法药水 题目描述 发完了 k 张照片,佳佳却得到了一个坏消息:他的 MM 得病了!佳佳和大家一样焦急 万分!治好 MM 的病只有一种办法,那就是传说中的 0 号药水 --怎么样才能 ...
- 「Vijos 1285」「OIBH杯NOIP2006第二次模拟赛」佳佳的魔法药水
佳佳的魔法药水 背景 发完了k张照片,佳佳却得到了一个坏消息:他的MM得病了!佳佳和大家一样焦急万分!治好MM的病只有一种办法,那就是传说中的0号药水--怎么样才能得到0号药水呢?你要知道佳佳的家境也 ...
- [NDK 佳佳的魔法药水]
[题目]:佳佳的魔法药水 [来源]:NDK [关键字]:图论 构图 //================================================================ ...
- vijos 1282128312841285 佳佳的魔法照片/魔法药水/魔杖/魔法阵
题目链接: https://vijos.org/p/1282 https://vijos.org/p/1283 https://vijos.org/p/1284 https://vijos.org/p ...
- vijosP1285 佳佳的魔法药水
vijosP1285 佳佳的魔法药水 链接:https://vijos.org/p/1285 [思路] 图论思想. 很巧妙. 如A+B=C,将AB之间连边,边权为C,用以找相连物品与合成物. 用Dij ...
- Vijos - 佳佳的魔法药水(最短路)
题目链接:https://vijos.org/p/1285 背景 发完了k张照片,佳佳却得到了一个坏消息:他的MM得病了!佳佳和大家一样焦急万分!治好MM的病只有一种办法,那就是传说中的0号药水--怎 ...
- 洛谷 P5740 【深基7.例9】最厉害的学生 题解
Hello!这是我第一次在CSDN社区发题解呢(虽然我只是一个小菜鸡,只会C++,啥也不懂)! 这一次的题解我给大家带来了洛谷 函数与结构体部分的P5740 最厉害的学生这道题. 我们可以先审一审题目 ...
最新文章
- 框架-.NET:Spring.Net
- 中高德地图只显示某一城市_干货 | 如何快速制作数据地图?让你的可视化逼格再高一级!...
- JSON 之 SuperObject(2): 构建方式与 AsJSon
- transaction type popup window when create service order
- Go vs .NET Core 2.1
- mybatis源码阅读(六) ---StatementHandler了解一下
- java sleep和wait区别
- bash/shell 解析命令行参数工具:getopts/getopt
- mysql 直接删表空间文件_oracle删除(释放)数据文件/表空间流程
- Visual Studio 2017入门教程丨如何运行一个Fortran程序
- 动态盘/基本盘互转:动态盘怎么转换基本盘?
- 【数据结构】【王道】【线性表】单链表的实现及基本操作(带头结点)(可直接运行)
- windows7 系统中,IE打开网页窗口提示网页上有错误“无法打开匿名级安全令牌”解决方法
- 使用HTML5自制视频控件
- GFCTF2021 部分WP
- MOOC和网上学习平台整理
- houdini之vex 数组
- 数据库系统原理与应用教程(037)—— MySQL 的索引(三):删除索引
- 半导体器件物理【11】载流子输运现象 —— 散射率Ρ、迁移率μ、电阻率ρ(电导率σ)、砷化镓
- 只要不上网,pc机就不会感染计算机病毒,大学计算机题库——判断题.xls
热门文章
- 地下水运动方程的解析解(一维潜水)
- halcon学习和实践(颜色筛选)
- 走进web(关于web、web1.0、web2.0、web3.0)
- html5隐藏%3ctextarea,html text隐藏,html textarea
- 小科普:什么是屏幕分辨率
- UCK Network 为开发者提供全方位孵化,打造区块链爆款应用
- 剑指Offer-05:替换空格
- BASH比较两位数大小
- 测试工程师面试题,你都遇到过哪些呢?
- [转]JQuery Mobile 手机显示页面偏小_se7en3_新浪博客