博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二分法 organ Saltless
阅读量:5240 次
发布时间:2019-06-14

本文共 1643 字,大约阅读时间需要 5 分钟。

organ

【描述】

现在某组织中(记作R)有n个人,他们的联络网形成一棵以Saltless为根的树,有边相连代表两人可以直接联络。
每个人有一个代号,Saltless代号为1,且除Saltless外每个人的父节点的代号小于他自己的代号。
由于某些原因,Saltless给R的成员分别下达紧急任务,R需要分成m组行动,每个组必须满足如下条件:
    
1、每个组员仅分在本组中
    
2、至少有一个组员
    
3、任意两个组员无需通过本组外的人就可以联络(但可以通过本组组员进行联络)
 
每个人有一个能力指数,一个组的能力指数是全组人能力指数之和。
对于任意一种正确的分组,平均度就是m组中最小能力指数。为了分组较为平均,Saltless希望平均度尽可能大。
 
【格式】
PROGRAM NAME: organ
 
INPUT FORMAT:
第一行为三个数:n,m,和Saltless的能力指数(1<=m<=n<=10000)。
接下来n-1行,每行两个数:此人的父节点代号和他的能力指数(能力指数值为正整数,不超过30,行数就是他本身的代号)
 
OUTPUT FORMAT:
输出格式: 一个数,表示最大的平均度。
 
SAMPLE INPUT (organ.
in
)
7 2 2
1 4
1 5
2 1
2 2
3 4
4 3
 
SAMPLE OUTPUT (organ.
out
)
10
 
 
【Hint】
分组:{1,3,6},{2,4,5,7}

 

1 /*这道题目的关键就在于子节点的编号一定小于它的父亲编号,那么我们倒叙循环就可以按照题目要求(从子到父)遍历所有点。 2 二分一个最小值,如果i这个节点的子树上(一定可以相互联系)的总和小于x,那么就把这些值加到i的父亲上,else 就分组数目+1, 3 检验如果最后的分组数多于等于m,就是最小值取小了,l=mid+1,else r=mid+1,貌似最后输出l还是r,因为题目而有所不同,我区分不开,都是用样例检验 4 */ 5 #define N 10011 6 #include
7 using namespace std; 8 #include
9 #include
10 int p[N],fa[N],abi[N],n,m,l=0,r=0;11 inline void input()12 {13 scanf("%d%d%d",&n,&m,&abi[1]);14 for(int i=2;i<=n;++i)15 {16 scanf("%d%d",&fa[i],&abi[i]);17 r+=abi[i];18 }19 }20 bool check(int x)21 {22 for(int i=1;i<=n;++i)23 p[i]=abi[i];24 int num=0;25 for(int i=n;i>=1;--i)26 if(p[i]
=m);/*当数目刚好取到的时候,我们也要取大,因为题目要最小值的最大*/29 }30 int main()31 {32 input();33 int mid;34 while(l<=r)35 {36 mid=(l+r)>>1;37 if(check(mid))38 l=mid+1;39 else r=mid-1;40 }41 printf("%d\n",r);42 return 0;43 }

 

转载于:https://www.cnblogs.com/c1299401227/p/5585564.html

你可能感兴趣的文章
poj 1160
查看>>
c语言-键盘扫描码
查看>>
折半查找、
查看>>
兼容IE的写法收集||bug修复
查看>>
python中的reverse
查看>>
cisco 交换机 IOS命令
查看>>
form表单提交的方法
查看>>
Ubuntu18.10创建软件图标
查看>>
菜鸟开启之路
查看>>
vector
查看>>
珠心算测验(0)<P2014_1>
查看>>
NGUI3.7的自适应问题
查看>>
CDH安装系统环境准备——系统版本和安装包下载地址指南
查看>>
Ubuntu安装配置mongodb
查看>>
Hibernate学习(一)创建数据表
查看>>
Java实现大批量数据导入导出(100W以上) -(一)导入
查看>>
BZOJ2721 [Violet 5]樱花
查看>>
区分Activity的四种加载模式---以及Intent的setFlags
查看>>
JS正则表达式
查看>>
CocosCreator游戏开发---菜鸟学习之路(二)SocketIO简易教程
查看>>