uva 12186 Another Crisis

来源:互联网 发布:广电网络个人工作总结 编辑:程序博客网 时间:2024/06/05 22:45

c=(k*t-1)/100+1如果不减1当10 10时是2,如果不加一不减一的话那么3 50是1而不是2.

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<vector>using namespace std;const int maxn=100000+10;vector<int> son[maxn];int n,t,c,u;int dp(int u){    if(son[u].empty()) return 1;    int k=(int)son[u].size();    vector<int> d;    for(int i=0;i<k;i++)        d.push_back(dp(son[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)&&(n||t))    {        for(int i=0;i<=n;i++) son[i].clear();        for(int i=1;i<=n;i++){            scanf("%d",&u);            son[u].push_back(i);        }        printf("%d\n",dp(0));    }    return 0;}


0 0
原创粉丝点击