8.11

发布时间 2023-08-11 20:21:11作者: 徐星凯
#include<iostream>
#include<vector>
#include<cstdio>
using namespace std;
const int N = 1e5 + 10;
vector<int>v[N];
int n ,vis[N];
double z ,r ,sum ,ans;
void dfs (double sum ,int u) {
    if (vis[u]) {
        ans += (sum * v[u][0]);
        return ;
    }
    for (int i = 0;i < v[u].size(); i++)  {
        dfs (sum * (1 - r / 100) ,v[u][i]);
    }
}
int main() {
    cin >> n >> z >> r;
    for (int i = 0;i < n; i++) {
        int  k ,x;
        cin >> k;
        if (!k) {
            cin >> x;
            vis[i] = 1;
            v[i].push_back(x);
        }
        else {
            while (k--) {
                cin >> x;
                v[i].push_back(x);
            }
        }
    }
    dfs(z ,0);
    printf("%.0lf" ,ans - 0.5);
    return 0;
}
#include<bits/stdc++.h>
using namespace std;
struct Node{
    string s; //姓名
    int x;    //种类
    double y;    //平均标签数
};
bool cmp(Node a,Node b)
{
    if(a.x==b.x)return a.y<b.y;
    return a.x>b.x;
}
int main()
{
    int n,m,p;
    set<int>t[105];
    Node r[105];
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>r[i].s>>m;
        for(int j=0;j<m;j++)
        {
            cin>>p;
            t[i].insert(p);
        }
        r[i].x=t[i].size();
        r[i].y=m*1.0/t[i].size();
    }
    sort(r,r+n,cmp);
    for(int i=0;i<3;i++)
    {
        if(i<n) 
        {
            if(i==0)
                cout<<r[i].s;
            else
                cout<<" "<<r[i].s;
        }
        else
            cout<<" -"; 
    }
    return 0;
}