首页 > 其他分享 >UVa 12186 工人的请愿书

UVa 12186 工人的请愿书

时间:2022-11-19 18:11:25浏览次数:41  
标签:直属 上司 int 请愿书 员工 12186 UVa include

详见紫书P444

题目

输入:
员工数n 百分比T
员工1的直属上司 员工2的直属上司 ... 员工n的直属上司

3 100
0 0 0
3 50
0 0 0
14 60
0 0 1 1 2 2 2 5 7 5 7 5 7 5
0 0

输出
需要签字的最少工人(叶子)数

3
2
5

代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int maxn = 100000+5;
int n, T;
vector<int> sons[maxn]; // sons[i]:结点i的子节点列表

void init()
{
    for(int i = 0; i<maxn; ++i) sons[i].clear();
    for(int i=1; i<=n; ++i)
    {
        int boss;
        scanf("%d", &boss);
        sons[boss].push_back(i);
    }
}

int solve(int u)
{
    if(sons[u].empty()) return 1;   // 让一个工人(叶子)签字,需要他自己签字
    int k = sons[u].size();
    vector<int> d;  // d[u]:让u给上级发信最少需要的工人数
    for(int i=0; i<k; ++i)
    {
        d.push_back(solve(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)
    {
        init();
        printf("%d\n", solve(0));
    }
}

标签:直属,上司,int,请愿书,员工,12186,UVa,include
From: https://www.cnblogs.com/shimmer-ghq/p/16906607.html

相关文章

  • UVA Magical GCD
    ​​MagicalGCD​​题意:给定一个数列,求一个子列,该子列的最大公约数乘上子列长度的值最大,输出最大值。数列的大小是100000,这些数的大小是1-10^12。解题思路:一开始想的是用暴......
  • UVA6588 - Crane
    ​​Regionals2013​​​>>​​​Europe-Central​​​​6588-Crane​​题意:给定一组无序数,从1-n,要求排序,排序的要求是选定一个区间[a,b],则......
  • UVA1331 题解
    前言题目传送门!更好的阅读体验?计算几何、区间DP。思路......
  • 题解 UVA12265【贩卖土地 Selling Land】
    postedon2022-09-2414:33:29|under题解|sourceproblem一个黑白矩阵,求以每个点为右下角,能围出的周长最大的全白矩形的周长。\(n\leq2000\)。solution试图进行......
  • UVA323 Jury Compromise
    UVA323JuryCompromise-洛谷|计算机科学教育新生态(luogu.com.cn)由于选择人数有限制(等于\(m\)),因此考虑将人数设入动态规划的一维。考虑目标是\(D+P\)最大,那......
  • UVALive 6955 Finding Lines
    ​​点击打开链接​​随机选一条线段然后判断是否满足答案,然后执行一定的次数,基本可以保证正确。#include<cstdio>#include<ctime>#include<cstring>#include<iostream>#inc......
  • UVALive 7148 LRIP
    2014年上海区域赛的K题,树上点分治,查找差值小于等于D的非严格单调序列的最长长度。对于每个点,维护从该点出发的上升序列同长度的最小值和下降序列的同长度最大值,二分之前的得......
  • UVA1364 Knights of the Round Table | 点双连通分量
    主要就是一个性质:如果一个点双连通分量中有奇环,那么这个点双连通分量中的每个点都在至少一个奇环中。#include<bits/stdc++.h>usingnamespacestd;constintN=100......
  • UVA 1204
    好久没写题解了,现在写一篇。首先我们可以想到一个\(O(n^2)\)DP——\(f(S,i,0/1)\)表示当前我们考虑字符串集合为\(S\),最后一个字符串为\(i\),是正着还是反着放的。(这类“正......
  • uva 12563 Jin Ge Jin Qu hao
    01背包,这题设计状态f[i][j]为刚好用完时间j时的歌曲数,这样方便找到用时(初始化设置一下就好 #include<iostream>#include<algorithm>#include<cstring>usingna......