首页 > 其他分享 >Total Sales of Supply Chain (25)

Total Sales of Supply Chain (25)

时间:2022-10-02 22:44:30浏览次数:39  
标签:25 temp int tree Sales number retailers supplier Total

题目描述

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. Only the retailers will face the customers.
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 total sales from all the retailers.

输入描述:

Each input file contains one test case.  For each case, the first line contains three positive numbers: N (<=105), the total number of the members in the supply chain (and hence their ID's are numbered from 0 to N-1, and the root supplier's ID is 0); P, the unit price given by the root supplier; and r, the percentage rate of price increment for each distributor or retailer.  Then N lines follow, each describes a distributor or retailer in the following format:
Ki ID[1] ID[2] ... ID[Ki]
where in the i-th line, Ki is the total number of distributors or retailers who receive products from supplier i, and is then followed by the ID's of these distributors or retailers. Kj being 0 means that the j-th member is a retailer, then instead the total amount of the product will be given after Kj. All the numbers in a line are separated by a space.


输出描述:

For each test case, print in one line the total sales we can expect from all the retailers, accurate up to 1 decimal place.  It is guaranteed that the number will not exceed 1010.

输入例子:

10 1.80 1.00
3 2 3 5
1 9
1 4
1 7
0 7
2 6 1
1 8
0 9
0 4
0 3

 


输出例子:

42.4

依旧是树的层序遍历,当碰到叶结点后直接计算即可

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n,k;
 4 vector <set<int>> tree(100005); //tree[i]=j表示i结点的孩子集合是j
 5 int number[100005]; //存储卖出的数量
 6 double p,r;
 7 double sum=0;
 8 int level=0; //当前层数
 9 //层序遍历
10 void traversal(queue<int> q,int level){
11     queue<int> child;
12     if (q.empty())
13         return;
14     while(!q.empty()){
15         int temp=q.front();
16         q.pop();
17         set<int>::iterator it;
18         for (it=tree[temp].begin();it!=tree[temp].end();++it){
19             if (*it==-1){ //表示该结点为叶结点
20                 sum+=number[temp]*p*pow(1.0+r/100,level);
21                 break;
22             }
23             else{
24                 child.push(*it);
25             }
26         }
27     }
28     traversal(child,level+1);
29 }
30 int main(){
31     cin>>n>>p>>r;
32     queue<int> initial;
33     for (int i=0;i<n;++i){
34         cin>>k;
35         int temp;
36         if (k!=0){
37             while(k--){
38                 cin>>temp;
39                 tree[i].insert(temp);
40                 if (i==0)
41                     initial.push(temp);
42             }
43         }
44         else{
45             cin>>number[i];
46             tree[i].insert(-1);//添加叶结点标记
47         }
48     }
49     traversal(initial,1);
50     printf("%.1f",sum);
51 }

 

标签:25,temp,int,tree,Sales,number,retailers,supplier,Total
From: https://www.cnblogs.com/coderhrz/p/16749677.html

相关文章

  • 1105 链表合并——25分
    给定两个单链表L1=a1→a2→⋯→an−1→an和L2=b1→b2→⋯→bm−1→bm。如果n≥2m,你的任务是将⽐较短的那个链表逆序,然后将之并⼊⽐较⻓的那个链表,得到⼀个形如a1→a2......
  • day11leetcode232,225,20,1047
    225.用队列实现栈利用两个栈来实现队列的基本操作一个负责进栈一个负责出栈classMyQueue{Stack<Integer>stackIn;Stack<Integer>stackOut;publi......
  • 25.移动端像素比
    像素简介1.基本概念像素屏幕是由一个一个发光的小点构成,这一个个小点就是像素分辨率:1920x1080说的就是屏幕中小点的数量在前端开发中像素分成两种情况讨论,css像素......
  • 代码随想录第十一天 | 232.用栈实现队列、225. 用队列实现栈、20. 有效的括号、1047.
    第一题232.用栈实现队列请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现MyQueue类:voidpush(intx)将元素x推......
  • 2022-2023-1 20221325《计算机基础与程序设计》第五周学习总结
    班级链接:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK05作业目标:学习计算机科学概论第6章和《C......
  • T258192 数字转换
    题目描述已知一个 nn 进制数,将其转为 mm 进制,请你编程完成这个任务。输入格式共三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16)n(2≤n≤16),第二行是......
  • T258193 低位与高位
    题目描述给出一个小于2^{32}232的正整数。这个数可以用一个3232位的二进制数表示(不足3232位用00补足)。我们称这个二进制数的前1616位为“高位”,后1616位为“低位”。将它......
  • 2022-09-25 反思
    摘要:记录周反思反思:现阶段对于Tianmu引擎功能的单元测试,集成测试都不完善,只有MTR的SQL句子的黑盒测试,而且现在MTR的SQL句子测试也不够完善。建议考虑开发Tianmu引擎......
  • javascript:每次只加载3个页面的幻灯(chrome 105.0.5195.125)
    一,js代码:<html><head><metacharset="utf-8"/><title>测试</title><scriptsrc="pcpageapp.js"></script><styletype="text/css">.page......
  • 学期(如2022-2023-1) 学号(如:20221425) 《计算机基础与程序设计》第五周学习总结
    学期(如2022-2023-1)学号(如:20221425)《计算机基础与程序设计》第五周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2022-2023-1-计算机基础与程序设计)这......