8.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; }