首页 > 其他分享 >1106

1106

时间:2023-04-21 20:22:05浏览次数:47  
标签:10 零售商 int 供应商 1106 include Ki

供应链是由零售商,经销商和供应商构成的销售网络,每个人都参与将产品从供应商转移到客户的过程。

整个销售网络可以看作一个树形结构,从根部的供应商往下,每个人从上一级供应商中买入商品后,假定买入价格为 P,则会以高出买入价 r% 的价格向下出售。

只有零售商(即叶节点)可以直接将产品销售给顾客。

现在,给定整个销售网络,请你计算零售商能达到的最低销售价格。

输入格式

第一行包含三个数,N 表示供应链总成员数(所有成员编号从 0 到 N−1,根部供应商编号为 0),P 表示根部供应商的产品售卖价格,r,溢价百分比。

接下来 N 行,每行包含一个成员的信息,格式如下:

Ki ID[1] ID[2]… ID[Ki]

其中第 i 行,Ki 表示从供应商 i 直接进货的成员数,接下来 Ki 个整数是每个进货成员的编号。

如果 Kj 为 0 则表示第 j 名成员是零售商。

输出格式

输出零售商可达到的最低销售价格,保留四位小数,以及可达到最低销售价格的零售商的数量。

数据范围

1≤N≤10^5,
0<P≤1000,
0<r≤50,
最终答案保证不超过 10^10

输入样例:

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

输出样例:

1.8362 2

实现代码:

#include<iostream>
#include<vector>
#include<queue>
using namespace std;
const int N=1e5+5;
vector<int>v[N];
int level[N],vis[N];
int n,res=0x3f3f3f3f;
double p,r;
void bfs(int x){
    queue<pair<int,int> >q;
    q.push({x,0});
    while(q.size()){
        int dis=q.front().second;
        int s=q.front().first;
        q.pop();
        if(vis[s])continue;
        vis[s]=1;
        if(v[s].size()==0){
            res=min(res,dis),level[s]=dis;
        }
        for(int i=0;i<v[s].size();i++){
            q.push({v[s][i],dis+1});
        }
    }
}
int main(){
    cin>>n>>p>>r;
    for(int i=0;i<n;i++){
        int k;
        cin>>k;
        while(k--){
            int x;
            cin>>x;
            v[i].push_back(x);
        }
    }
    bfs(0);
    int cnt=0;
    for(int i=0;i<res;i++)p*=(1+r/100);
    for(int i=0;i<n;i++)if(level[i]==res)cnt++;
    printf("%.4lf %d",p,cnt);
    return 0;
}

 

标签:10,零售商,int,供应商,1106,include,Ki
From: https://www.cnblogs.com/hxss/p/17341698.html

相关文章

  • 1106 Lowest Price in Supply Chain
    Asupplychainisanetworkofretailers(零售商),distributors(经销商),andsuppliers(供应商)--everyoneinvolvedinmovingaproductfromsuppliertocustomer.Star......
  • 20221106
    20221106题目byGeorge_PloverNOIP模拟题目期望得分实际得分二叉树上的询问10020追逐1000荷塘月色00光华楼040二叉树上的询问competi......
  • 20221106 IDEA常用插件
    插件功能Chinese​(Simplified)​LanguagePack/中文语言包汉化包IDEEvalReset科学使用IDEATranslation翻译应用RainbowBrackets彩虹括号......
  • 1106. 解析布尔表达式
    给你一个以字符串形式表述的 布尔表达式(boolean)expression,返回该式的运算结果。有效的表达式需遵循以下约定:"t",运算结果为True"f",运算结果为False"!(expr)",运算过程......
  • Leetcode第1106题:解析布尔表达式(Parsing a boolean expression)
    解题思路看到表达式求解,自然想到栈。从左至右遍历布尔表达式expression,对于不同类型字符,进行不同操作:逗号,,跳过该字符;不是逗号,和右括号),入栈;如果是右括号),则一个表......
  • 1106. 解析布尔表达式
    1106.解析布尔表达式给你一个以字符串形式表述的 布尔表达式(boolean)expression,返回该式的运算结果。有效的表达式需遵循以下约定:"t",运算结果为True"f",运算结果为......
  • [LeetCode] 1106. 解析布尔表达式
    思路从题目中可以得出,一个表达式是通过n(n>=1)个表达式并列、嵌套而成。其实很像前缀表达式。这样我们很容易想到通过递归的方式来做,递归的边界条件就是"t"或者"f"......
  • 1106. 解析布尔表达式
    1106.解析布尔表达式classSolution{intindex;char[]ch;publicbooleanparseBoolExpr(Stringexpression){ch=expression.toCharArray(......
  • 1106 2019数列——15分
    把2019各个数位上的数字2、0、1、9作为一个数列的前4项,用它们去构造一个无穷数列,其中第n(>4)项是它前4项之和的个位数字。例如第5项为2,因为2+0+1+9=12,个位数是......