UVa 12186 树形dp
2017-10-21 17:37
513 查看
题意 分析 白皮书 P282 例题9-12
AC代码
1 #include <stdio.h> 2 #include <math.h> 3 #include <string.h> 4 #include <stdlib.h> 5 #include <iostream> 6 #include <sstream> 7 #include <algorithm> 8 #include <string> 9 #include <queue> 10 #include <vector> 11 using namespace std; 12 const int maxn= 1e5+10; 13 const int maxm= 1e4+10; 14 const int inf = 0x3f3f3f3f; 15 typedef long long ll; 16 int n,t; 17 vector<int> sons[maxn]; 18 int dp(int a) 19 { 20 if(sons[a].empty()) 21 return 1; 22 int k=sons[a].size(); 23 vector<int> d; 24 for(int i=0; i<k; i++) 25 d.push_back(dp(sons[a][i])); //直接递归下去 26 sort(d.begin(),d.end()); 27 int c=(k*t-1)/100+1; 28 int ans=0; 29 for(int i=0; i<c; i++) 30 ans+=d[i]; 31 return ans; 32 } 33 int main() 34 { 35 while(scanf("%d %d",&n,&t)!=EOF) 36 { 37 if(n==0&&t==0) 38 break; 39 for(int i=0; i<=n; i++) //多组输入 清空vector 注意n也要清空 40 sons[i].clear(); 41 int m; 42 for(int i=1; i<=n; i++) 43 { 44 scanf("%d",&m); //输入第i个点的父节点是m 将i存到m的儿子数组里 45 sons[m].push_back(i); 46 } 47 printf("%d\n",dp(0)); 48 } 49 return 0; 50 }
相关文章推荐
- UVa 12186 - Another Crisis(树形DP)
- UVA12186--- Another Crisis (树形dp)
- UVA - 12186 Another Crisis (树形dp)
- Another Crisis - UVa 12186 树形dp
- UVA-12186 Another Crisis 树形dp
- UVA 12186 Another Crisis(树形DP)
- UVA - 12186 Another Crisis (树形DP)
- UVA 12186 Another Crisis(树形DP)
- UVA 12186 Another Crisis [树形dp]
- 树形DP(工人的请愿书,uva 12186)
- UVA 12186 Another Crisis 树形DP
- UVA - 12186 Another Crisis (树形dp)
- 【树形DP】UVa 12186 Another Crisis
- UVa 12186 - Another Crisis(树形DP)
- UVa - 12186 - Another Crisis ( 树形DP )
- 树形dp uva 12186 Another Crisis
- uva 12186 lrj-P282 简单树形dp
- UVa 12186 工人的请愿书(树形DP)
- UVa 12186 Another Crisis(树形DP)
- uva 12186 Another Crisis 树形dp