zoukankan      html  css  js  c++  java
  • L2-1 功夫传人 (25分)

    L2-1 功夫传人 (25分)

    假算法过题

    #include<iostream>
    #include<cstdio>
    #include<vector>
    #include<algorithm>
    #include<cstring>
    #include<string>
    #include<map>
    #include<set>
    #include<queue>
    #include<iomanip>
    #include<stack>
    using namespace std;
    #define STDIN freopen("in.in", "r", stdin);freopen("out.out", "w", stdout);
    
    
    const int N = 1e5 + 10;
    
    
    int n;
    double z, r;
    double v[N];
    double v1[N];
    int main()
    {
        STDIN
        cin >> n >> z >> r;
        v[0] = z;
        double sum = 0;
        double sum2 = 0;
        bool flag = false;
        for (int i = 0; i < n; i++)
        {
            int x; cin >> x;
            if (x == 0)
            {
                double t;
                cin >> t;
                sum += v[i]*(t);sum2 += v[i]*(t+1);
                v[i] = v[i]*(t);v1[i] = v1[i]*(t+1);
                if (v[i] == 0) flag = true;
                // cout << i << " " <<v[i] << endl;
            }
            else 
                for (int j = 1; j <= x; j++)
                {
                    int t; cin >> t;
                    v[t] = v[i]*(1-r*0.01);
                    v1[t] = v1[i]*(1-r*0.01);
                }
        }
        if (flag)
            printf("%lld
    ", (long long)sum2);
        else printf("%lld
    ", (long long)sum);
    }
    #include<iostream>
    #include<cstdio>
    #include<vector>
    #include<algorithm>
    #include<cstring>
    #include<string>
    #include<map>
    #include<set>
    #include<queue>
    #include<iomanip>
    #include<stack>
    using namespace std;
    #define STDIN freopen("in.in", "r", stdin);freopen("out.out", "w", stdout);
    
    
    const int N = 1e5 + 10;
    
    int n;double z, r;
    int h[N], e[N<<1], ne[N<<1], idx;
    double bei[N];
    void add(int a, int b)
    {
        e[idx] = b;
        ne[idx] = h[a];
        h[a] = idx++;
    }
    double sum = 0;
    void dfs(int u, double v)
    {
        if (bei[u] != 0) sum += bei[u]*v;
        for (int i = h[u]; ~i; i = ne[i])
        {
            int j = e[i];
            dfs(j, v*(1-r*0.01));
        }
    }
    int main()
    {
    //     STDIN
        memset(h, -1, sizeof h);
        cin >> n >> z >> r;
        for (int i = 0; i < n; i++)
        {
            int x; cin >> x;
            if (x == 0)
            {
                cin >> bei[i];
            }
            else 
                for (int j = 1; j <= x; j++)
                {
                    int t; cin >> t;
                    add(i, t);
                }
        }
        dfs(0, z);
        printf("%lld", (long long) sum);
    }
  • 相关阅读:
    接口的故事
    Bash CookBook(一)--基础
    Spring学习笔记(四)--MVC概述
    Spring学习笔记(三)--Convert System设计
    java web框架发展的新趋势--跨界轻型App
    由Strurts2漏洞引开谈谈web代码安全问题
    Java线程同步之一--AQS
    Android Studio 0.4 + PhoneGap 3.3 开发环境的搭建
    redis的多线程
    原电商设计框架
  • 原文地址:https://www.cnblogs.com/hulian425/p/14039924.html
Copyright © 2011-2022 走看看