#include<cstdio> #include<cstring> #include<algorithm> #include<cstdlib> #include<iostream> #include<queue> #include<vector> #include<sstream> #include<cmath> #include<queue> #include<cctype> #include<set> #include<unordered_set> using namespace std; const int maxn = 100000 + 10; int n, T; vector<vector<int> > v; int dp(int i){ if(v[i].empty()) return 1; vector<int>temp; int k = v[i].size(); for(int j = 0; j < k; j++) temp.push_back(dp(v[i][j])); sort(temp.begin(),temp.end()); int c = ceil(k*T*1.0/100); int ans = 0; for(int i = 0; i < c; i++) ans += temp[i]; return ans; } int main(){ while( scanf("%d%d",&n,&T) == 2 && n && T){ v.clear(); v.resize(maxn); int a; for(int i = 1; i <= n; i++){ scanf("%d",&a); v[a].push_back(i); } printf("%d\n",dp(0)); } return 0; }
uva 12186
猜你喜欢
转载自blog.csdn.net/a874288174/article/details/80033337
今日推荐
周排行