(图截自算法导论)
先做下笔记,记住结论。
寻找带权中位数方法:
假设结构为s
struct Node
{
double value;
double weight;
}nodes[maxn];
则
1.按照坐标从小到大排序(用快排)
2.计算出总的权值sumweight(即所有点weight之和)
3.计算带权中位数
Node Getmid(Node *node)
{
double lweight=0;
for(int i=0;i<N;i++)
{
lweight+=nodes[i].weight;
if(lweight>=sumweight/2)
break;
}
return nodes[i];
}