1090 Highest Price in Supply Chain
A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone involved in moving a product from supplier to customer.
Starting from one root supplier, everyone on the chain buys products from one's supplier in a price P and sell or distribute them in a price that is r% higher than P. It is assumed that each member in the supply chain has exactly one supplier except the root supplier, and there is no supply cycle.
Now given a supply chain, you are supposed to tell the highest price we can expect from some retailers.
Input Specification:
Each input file contains one test case. For each case, The first line contains three positive numbers: N (≤), the total number of the members in the supply chain (and hence they are numbered from 0 to N−1); P, the price given by the root supplier; and r, the percentage rate of price increment for each distributor or retailer. Then the next line contains N numbers, each number Si is the index of the supplier for the i-th member. Sroot for the root supplier is defined to be −. All the numbers in a line are separated by a space.
Output Specification:
For each test case, print in one line the highest price we can expect from some retailers, accurate up to 2 decimal places, and the number of retailers that sell at the highest price. There must be one space between the two numbers. It is guaranteed that the price will not exceed 1.
Sample Input:
9 1.80 1.00
1 5 4 4 -1 4 5 3 6
Sample Output:
1.85 2
题意:
给出商品的供应链,每一条链之间都会提高r%(相对于进价而言),找到最高的价格,也就是找到最长的供应链,并指出最长的供应链有几条。
思路:
这种题目如果用对数据结构的话会很简单,这一题用到了queue和map,map给出谁是供应者,谁是被供应者,queue用来模拟层次遍历,最长的供应链,也就是最大的层数。
Code:
#include<iostream>
#include<map>
#include<iomanip>
#include<vector>
#include<queue> using namespace std; int main() {
int n;
double p, r;
cin >> n >> p >> r; int t;
vector<int> chain(n);
for (int i = 0; i < n; ++i) {
cin >> t;
chain[i] = t;
}
map<int, vector<int> > mp;
int last;
for (int i = 0; i < n; ++i) {
last = chain[i];
mp[last].push_back(i);
} auto it = mp.find(-1);
vector<int> v = it->second;
queue<int> q;
for (int i = 0; i < v.size(); ++i)
q.push(v[i]);
q.push(-1);
int len = 0, num = 0;
while(!q.empty()) {
if (q.size() == 1) break;
int f = q.front();
q.pop();
num++;
if (f == -1) {
len++;
num = 0;
q.push(-1);
} else {
if (mp.find(f) != mp.end()) {
v = mp.find(f)->second;
for (int i = 0; i < v.size(); ++i)
q.push(v[i]);
}
}
} double heighPrice = p;
for (int i = 0; i < len; ++i) {
heighPrice *= (1 + r/100);
} cout << fixed << setprecision(2) << heighPrice << " " << num << endl; return 0;
}
看到全部的数据都通过了,也可以睡觉了。
1090 Highest Price in Supply Chain的更多相关文章
- [建树(非二叉树)] 1090. Highest Price in Supply Chain (25)
1090. Highest Price in Supply Chain (25) A supply chain is a network of retailers(零售商), distributors ...
- PAT 1090 Highest Price in Supply Chain[较简单]
1090 Highest Price in Supply Chain(25 分) A supply chain is a network of retailers(零售商), distributors ...
- 1090 Highest Price in Supply Chain——PAT甲级真题
1090 Highest Price in Supply Chain A supply chain is a network of retailers(零售商), distributors(经销商), ...
- 1090. Highest Price in Supply Chain (25)
时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A supply chain is a network of r ...
- 1090. Highest Price in Supply Chain (25) -计层的BFS改进
题目如下: A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyon ...
- PAT 甲级 1090 Highest Price in Supply Chain
https://pintia.cn/problem-sets/994805342720868352/problems/994805376476626944 A supply chain is a ne ...
- 1090 Highest Price in Supply Chain (25 分)
A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...
- PAT 1090. Highest Price in Supply Chain
A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...
- 1090 Highest Price in Supply Chain (25)(25 分)
A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...
- PAT Advanced 1090 Highest Price in Supply Chain (25) [树的遍历]
题目 A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)–everyone inv ...
随机推荐
- 用Python来控制Autocad的打印------以Pycomcad为例
from pycomcad import * #以pycomcad作为接口库为例 import win32com acad=Autocad() 打印最重要的设置都在上面的界面中,下面对这些个界面,用P ...
- 微信小程序使用彩色图标(阿里巴巴 iconfont Symbol 的用法)微信小程序使用彩色图标(阿里巴巴 iconfont Symbol 的用法)
前提 需要安装好 nodejs (略) 用于下载插件 安装插件 npm install mini-program-iconfont-cli --save-dev 初始化配置文件 npx iconfon ...
- Python3.x 基础练习题100例(41-50)
练习41: 题目: 模仿静态变量的用法. 程序: def varfunc(): var = 0 print('var = %d' % var) var += 1 if __name__ == '__m ...
- pytorch(15)损失函数
损失函数 1. 损失函数概念 损失函数:衡量模型输出与真实标签的差异 \[损失函数(Loss Function): Loss = f(\hat y,y) \] \[代价函数(Cost Function ...
- 【HTB系列】 Lame
出品|MS08067实验室(www.ms08067.com) 本文作者:shavchen 01 前言 这次挑战的靶机是Lame,距今900天+,历史感十足 靶机描述 Lame is a beginne ...
- C#中事件流程的简单理解
C#中事件流程的简单理解 C#中事件基于委托,要理解事件要先理解委托,但是现在我还没想好怎么写委托,如果不懂委托可以先找找委托的文章 事件基于委托,为委托提供了一种发布/订阅机制 一上来就是这句话,很 ...
- BurpSuite 一些小技巧
拦截请求 设置不拦截下面的网站(记得保存项目,不然每次都要添加) .*\.?baidu.com|.*\.?google.com|.*\.?bcebos.com|.*\.?bdstatic.com|.* ...
- Apache配置 3.域名跳转
(1)介绍 当我们变更网站域名或者申多个域名指向一个网站的时候,这个时候我们就会用到域名跳转. (2)配 设置不是以111.com开头的网站都跳转到111.com上. 置 配置 设置不是以111.co ...
- 开发C语言的3款神器,VS2019、VScode和IntelliJ Clion
一.Visual Studio 2019环境安装配置+代码调试 环境安装配置 首先我们要在Visual Studio官方网站去下载安装包 进入官网后会发现有三种版本可供下载,分别是社区版.专业版和企业 ...
- reverseLinkedList(翻转链表)
ReverseLinkedList(翻转链表) 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.非连续.非顺序指的是,通过指针把一组零散的内存块串 ...