UVa 12186 工人的请愿书(树形DP)
https://vjudge.net/problem/UVA-12186
题意:
一个老板和n个员工组成树状结构,每个员工都有自己的唯一上司,老板的编号为0,员工1~n,工人们打算签署一个志愿书给老板,但无法跨级,当一个中级员工(非是工人的员工)的直属下属中不小于T%的人签字时,他也会签字并且递给他的直属上司,问:要让老板收到请愿书至少需要多少个工人签字
思路:
设d(u)表示让u给上级发信最少需要多少个工人。假设u有k个子节点,则至少需要c=(k*T-1)/100+1个直接下属发信才行。把所有子节点的d值从小到大排序,前c个加起来即可。最终答案是d(0)。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std; const int maxn = + ; int n, t;
vector<int> sons[maxn]; int dp(int u)
{
if (sons[u].empty()) return ;
vector<int> d;
int k = sons[u].size();
for (int i = ; i < k; i++)
d.push_back(dp(sons[u][i]));
sort(d.begin(), d.end());
int c = (k*t - ) / + ;
int ans = ;
for (int i = ; i < c; i++)
ans += d[i];
return ans;
} int main()
{
//freopen("D:\\txt.txt", "r", stdin);
int temp;
while (cin >> n >> t && (n || t))
{
for (int i = ; i <= n; i++)
sons[i].clear();
for (int i = ; i <= n; i++)
{
cin >> temp;
sons[temp].push_back(i);
}
int ans=dp();
cout << ans << endl;
}
return ;
}
UVa 12186 工人的请愿书(树形DP)的更多相关文章
- Uva 12186 工人的请愿书
题目链接:https://uva.onlinejudge.org/external/121/12186.pdf 题意: 给出一个树状关系图,公司里只有一个老板编号为0,其他人员从1开始编号.除了老板, ...
- UVA - 12186 Another Crisis(工人的请愿书)(树形dp)
题意:某公司有1个老板和n(n<=105)个员工组成树状结构,除了老板之外每个员工都有唯一的直属上司.老板的编号为0,员工编号为1~n.无下属的员工(叶子)打算签署一项请愿书递给老板,但不能跨级 ...
- UVA12186 工人的请愿书 Another Crisis (树形DP)
dp[i]表示要让i向上级发请愿书,最少需要多少个工人递交请愿书,因为要取前T%最小的,所以还要将i的子节点排序(这里用vector实现),取前c个最小的作为dp[i]的值. 这里用dfs可以省去dp ...
- UVa 12186 Another Crisis 工人的请愿书
c表示某上司上报的最少请愿下属,k表示总下属c=0.01T*k=kT/100(0.01T*k是整数)c=[0.01T*k]+1=[kT/100]+1(0.01T*k不是整数) kT=100 c=1 k ...
- 【UVA 1380】 A Scheduling Problem (树形DP)
A Scheduling Problem Description There is a set of jobs, say x1, x2,..., xn <tex2html_verbatim_ ...
- UVa 1220 - Party at Hali-Bula(树形DP)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- 题解 UVA12186 【工人的请愿书 Another Crisis】
俺太难了 记录一下我调了一个小时的错误 多测不清空 多测清空只清空了\(vector\) 多测全清空了,但是忘了清空\(vector[0]\) \(priority\)_ \(queue\)把\(gr ...
- UVa 1220 Party at Hali-Bula (树形DP,最大独立集)
题意:公司有 n 个人形成一个树形结构,除了老板都有唯一的一个直系上司,要求选尽量多的人,但不能同时选一人上和他的直系上司,问最多能选多少人,并且是不是唯一的方案. 析:这个题几乎就是树的最大的独立集 ...
- UVA Live Archive 4015 Cave (树形dp,分组背包)
和Heroes Of Might And Magic 相似,题目的询问是dp的一个副产物. 距离是不好表示成状态的,但是可以换一个角度想,如果知道了从一个点向子树走k个结点的最短距离, 那么就可以回答 ...
随机推荐
- postman 安装,对elasticsearch进行请求
1 使用postman对elasticsearch进行测试 :下载插件: https://www.getpostman.com/apps ,下载时exe文件,双击自动安装,首次打开注册.下面就可以使 ...
- POJ1789:Truck History(Prim算法)
http://poj.org/problem?id=1789 Description Advanced Cargo Movement, Ltd. uses trucks of different ty ...
- ML实践详细经典教程----用例图、顺序图、状态图、类图、包图、协作图
面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling Language?),这篇课程的目的是展示出UML ...
- javascript unicode与GBK2312(中文)编码转换示例
一个javascript的unicode与GBK2312编码相互转换的方法. 代码: var GB2312UnicodeConverter = { ToUnicode: function (s ...
- GridView 点滴
绑定数据时.在后台给GridView添加事件 protected void grd_RowDataBound(object sender, GridViewRowEventArgs e) { //当前 ...
- Twitter OA prepare: Two Operations
准备T家OA,网上看的面经 最直接的方法,从target降到1,如果是奇数就减一,偶数就除2 public static void main(String[] args) { int a = shor ...
- SQL工具类
package com.ebizwindow.crm.utils; import java.util.List; import com.ebizwindow.crm.constants.SqlCons ...
- sql怎么批量替换字段里的字符串的
方法一:varchar和nvarchar类型是支持replace,所以如果你的text不超过8000可以先转换成前面两种类型再使用replace 替换 text ntext 数据类型字段的语句 . 1 ...
- windows配置iis网站域名
1.在iis 中添加网站,网站名和主机名设置为test.com 2.在C:\Windows\System32\drivers\etc找到host文件,添加 127.0.0.1 test.com 127 ...
- mysql utf8编码设置
1.建立数据库时指定数据库db_test为utf8编码.: create database db_test character set utf8; 修改数据库db_test编码的命令为: alter ...