UVA12186 树形DP
来源:互联网 发布:ubuntu tensorflow安装 编辑:程序博客网 时间:2024/06/05 04:31
题意
一个公司有1个老板和n个员工,n个员工中有普通员工和中级员工。现在进行一次投票,若中级员工管理的普通员工中有T%的人投票,则中级员工也投票并递交给上级员工。求最少需要多少个普通员工投票,投票才能到达老板处。
题解
基础的树形DP,设d[u]为员工u想要投票给上级员工,最少需要多少个下级员工投票。若d[u]有k个下级员工,则至少需要(k*t-1)/100+1个下级员工投票才行。将所有下级员工d值排序,求前(k*t-1)/100+1个d值之和即为该员工d值。最后求出d[0],即为本题答案。
注意事项
vector排序方法为sort(vector.begin(),vector.end())
代码
#include <iostream>#include<cstdio>#include<algorithm>#include<vector>#include<cstring>using namespace std;vector<int> son[100010];int t;int dp(int u){ if(son[u].empty()){ return 1; } vector<int> d; int k=son[u].size(); for(int i=0;i<k;i++){ d.push_back(dp(son[u][i])); } sort(d.begin(),d.end()); int c=(t*k-1)/100+1; int sum=0; for(int i=0;i<c;i++){ sum+=d[i]; } return sum;}int main(){ int n; while(scanf("%d%d",&n,&t)){ memset(son,0,sizeof(son)); if(n+t==0) break; for(int i=1;i<=n;i++){ int x; scanf("%d",&x); son[x].push_back(i); } int ans=dp(0); printf("%d\n",ans); } return 0;}
0 0
- UVA12186 树形DP
- UVA12186--- Another Crisis (树形dp)
- 树形dp,工人请愿书 uva12186
- 工人的请愿 树形DP uva12186
- UVA12186 Another Crisis dp 题解
- UVA12186
- UVa12186
- dp uva12186树上的动态规划
- 例题9-12 UVa12186 Another Crisis(树型DP)
- 树形dp
- 树形DP
- 树形dp
- 树形DP
- 树形dp
- 树形DP
- 树形DP
- 树形DP
- 树形DP
- UOJ86 mx的组合数
- poj2778 DNA Sequence AC自动机+矩阵乘法
- 在一个二维数组中,行列都是递增,判断数组中是否含有输入的整数
- POJ3009-Curling 2.0-DFS
- springMVC源码分析--HttpMessageConverter写write操作(三)
- UVA12186 树形DP
- web应用中浏览器与服务端的编码和解码
- Burpsuite下载安装
- Android中样式和国际化
- 《操作系统原理》课程中涉及的数据结构总结
- UVA11624 Fire!
- 【STL】map和set的基本用法
- mininet+opendaylight/floodlight+wireshark搭建SDN测试环境
- MySQL主从复制配置