[中等] UVa OJ 12186 Another Crisis
2017-09-12 15:35
113 查看
题目描述
基本思路:某种程度上我觉得这个题不应该算动态规划了,因为本身也没有重复求解的结点,而且也不是啥状态转移,我觉得应该算一个关于树的问题。
关于树的问题大部分都可以递归求解,本题也是。设让员工i签字并且向上递送所需要的工人签字数为d[i],则d[i]=sum{d[j],d[k],d[l],...},其中d[j],d[k],d[l]...为把i的直接下属的d值从小到大排序后前c个,其中c=(kT-1)/100+1,也就是%T的直接员工数。
具体代码:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
const int maxn=100000+5;
vector<int> son[maxn];
int d[maxn];
int N,T;
int dp(int b)
{
if(son[b].empty())
return d[b]=1;
if(d[b]>0)
return d[b];
vector<int> dson;
int k=son[b].size();
for(int i=0;i<k;++i)
{
dson.push_back(dp(son[b][i]));
}
sort(dson.begin(),dson.end());
int n=(k*T-1)/100+1;
int sum=0;
for(int i=0;i<n;++i)
sum+=dson[i];
return sum;
}
int main()
{
// freopen("input.txt","r",stdin);
for(cin>>N>>T;N!=0||T!=0;cin>>N>>T)
{
fill(d,d+N+2,0);
for(int i=0;i<=N;++i)
son[i].clear();
for(int i=1;i<=N;++i)
{
int t;
cin>>t;
son[t].push_back(i);
}
cout<<dp(0)<<endl;
}
return 0;
}
基本思路:某种程度上我觉得这个题不应该算动态规划了,因为本身也没有重复求解的结点,而且也不是啥状态转移,我觉得应该算一个关于树的问题。
关于树的问题大部分都可以递归求解,本题也是。设让员工i签字并且向上递送所需要的工人签字数为d[i],则d[i]=sum{d[j],d[k],d[l],...},其中d[j],d[k],d[l]...为把i的直接下属的d值从小到大排序后前c个,其中c=(kT-1)/100+1,也就是%T的直接员工数。
具体代码:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
const int maxn=100000+5;
vector<int> son[maxn];
int d[maxn];
int N,T;
int dp(int b)
{
if(son[b].empty())
return d[b]=1;
if(d[b]>0)
return d[b];
vector<int> dson;
int k=son[b].size();
for(int i=0;i<k;++i)
{
dson.push_back(dp(son[b][i]));
}
sort(dson.begin(),dson.end());
int n=(k*T-1)/100+1;
int sum=0;
for(int i=0;i<n;++i)
sum+=dson[i];
return sum;
}
int main()
{
// freopen("input.txt","r",stdin);
for(cin>>N>>T;N!=0||T!=0;cin>>N>>T)
{
fill(d,d+N+2,0);
for(int i=0;i<=N;++i)
son[i].clear();
for(int i=1;i<=N;++i)
{
int t;
cin>>t;
son[t].push_back(i);
}
cout<<dp(0)<<endl;
}
return 0;
}
相关文章推荐
- 【UVA】12186-Another Crisis(动态规划)
- uva 12186 Another Crisis 树形dp
- UVA 12186 Another Crisis [树形dp]
- uva 12186 - Another Crisis-树上动态规划
- UVA12186 Another Crisis
- UVA - 12186 Another Crisis (树形dp)
- [中等] UVa OJ 10003 Cutting Sticks 动态规划
- UVA 12186 Another Crisis
- UVAOJ 12186 Another Crisis (树形DP)
- UVa 12186 Another Crisis (DP)
- UVA - 12186 Another Crisis (树形DP)
- [中等] UVa OJ 1395 Slim Span
- Another Crisis - UVa 12186 树形dp
- 12186 - Another Crisis(工人的请愿书z )
- UVa 12186 - Another Crisis(树形DP)
- UVA - 12186 Another Crisis
- 例题9-12 UVa12186 Another Crisis(树型DP)
- 【树形DP】UVa 12186 Another Crisis
- [中等] UVa OJ 804 Petri Net Simulation
- uva 12186——Another Crisis