dp uva12186树上的动态规划
Posted tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dp uva12186树上的动态规划相关的知识,希望对你有一定的参考价值。
http://vjudge.net/problem/UVA-12186
d(u)表示让u给上级发信最少需要多少工人
#include <bits/stdc++.h> using namespace std; const int maxn = 1e5+10; int N,T,f; vector<int> sons[maxn]; int dp(int u){ if(sons[u].empty()) return 1; int k = sons[u].size(); vector<int> d; for(int i=0; i<k; i++) d.push_back(dp(sons[u][i])); sort(d.begin(),d.end()); int c = (k*T-1)/100 + 1; int ans = 0; for(int i=0; i<c; i++) ans += d[i]; return ans; } int main(){ while(scanf("%d%d",&N,&T)==2 && (N||T)){ for(int i=0; i<=N; i++) sons[i].clear(); for(int i=1; i<=N; i++){ scanf("%d",&f); sons[f].push_back(i); } printf("%d\n",dp(0)); } }
以上是关于dp uva12186树上的动态规划的主要内容,如果未能解决你的问题,请参考以下文章