PTAサプライチェーンの最高価格(25分)

無限の光を放つのは人間の心であり、無限の闇を生み出すのも人間の心であり、光と闇が絡み合って戦うこの世界は、懐かしくて無力な世界です。

サプライチェーンとは、小売業者(小売業者)、流通業者、およびサプライヤ(サプライヤ)のネットワークであり、サプライヤから顧客への製品の移動に関わるすべての人です。

1つのルートサプライヤーから始めて、チェーン上の全員が価格Pで自分のサプライヤーから製品を購入し、Pよりもr%高い価格でそれらを販売または配布します。サプライチェーンの各メンバーは、ルートサプライヤーであり、供給サイクルはありません。

ここでサプライチェーンを考えると、一部の小売業者に期待できる最高価格を伝える必要があります。

入力仕様:

各入力ファイルには1つのテストケースが含まれています。いずれの場合も、最初の行には3つの正の数が含まれています。N(≤105)、サプライチェーンのメンバーの合計数(したがって、0からN-1まで番号が付けられます)。P、ルートサプライヤーから提供された価格。そして、r、各ディストリビューターまたは小売業者のための価格増分のパーセント。次に、次の行にはN個の数値が含まれています。各数値S iは、i番目のメンバーのサプライヤーのインデックスです。ルートサプライヤーのS rootは-1と定義されています。行内のすべての数値はスペースで区切られています。

出力仕様:

各テストケースについて、一部の小売業者から予想できる最も高い価格を小数点以下2桁まで正確に1行で印刷し、最も高い価格で販売する小売業者の数を示します。2つの数値の間にはスペースが1つ必要です。価格が10 10を超えないことが保証されています。

入力例:

9 1.80 1.00
1 5 4 4 -1 4 5 3 6

出力例:

1.85 2
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#include<climits>//INT_MAX
//#include<bits/stdc++.h>
#define PP pair<ll,int>
#define inf 0x3f3f3f3f
#define llinf 0x3f3f3f3f3f3f3f3fll
#define dinf 1000000000000.0
#define PI 3.1415926
typedef long long ll;
using namespace std;
int const mod=1e9+7;
const int maxn=1e5+10;
vector<int>a[maxn];
vector<int>jg;
int n,mx;
double P,r;
void dfs(int v,int h)
{
    if(a[v].size()==0)
    {
        if(h>mx)
        {
            mx=h;
            jg.clear();
            jg.push_back(v);
        }
        else if(h==mx)
            jg.push_back(v);
        return;
    }
    for(int i=0;i<a[v].size();i++)
    {
        int u=a[v][i];
        dfs(u,h+1);
    }
}
int main()
{
    scanf("%d%lf%lf",&n,&P,&r);
    r/=100;
    int root;
    for(int i=0;i<n;i++)
    {
        int x;
        scanf("%d",&x);
        if(x!=-1)
            a[x].push_back(i);
        else
            root=i;
    }
    dfs(root,1);
    printf("%.2f %d",P*pow(1+r,mx-1),jg.size());
    return 0;
}

 

おすすめ

転載: blog.csdn.net/weixin_44170305/article/details/108544751