给定整数序列a,b,求出下式的最大值

sum{ai*xi}/sum{bi*xi},xi=0|1

通俗来说,就是选出一些整数对(ai,bi),使得选出的a之和与选出的b之和商最大化

二分答案L,即选出的a之和与b之和的商是L

判断L是否成立,只要判断是否存在sum{ai-L*bi}>0即可

poj2728为要找出各边收益除以各边成本的最大生成树

那么二分商L,另边权变成ai-L*bi求最大生成树,如果和>0,答案可行

#include <iostream>
#include <string>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#define MAXN 1005
#define INF 1000000000
#define eps 1e-7
using namespace std;
int n;
double Edge[MAXN][MAXN],lowcost[MAXN];
int v[MAXN];
struct Point{int x, y, z;}p[MAXN]; double cal(int a, int b)
{
return sqrt(1.0 * (p[a].x - p[b].x) * (p[a].x - p[b].x) + 1.0 * (p[a].y - p[b].y) * (p[a].y - p[b].y));
}
double prim(double l)//总成本是否可以小于总长度*l ,即cost-l*len>=0,那么cost/len>=l,l得变大
{
double cost = , len = ;
double sum = ;
for(int i = ; i <= n; i++)
{
v[i] = ;
lowcost[i] = -l*abs(p[].z - p[i].z) + Edge[][i];
}
v[] = ;
for(int i = ; i < n; i++)
{
double mx = -INF;
int x = ;
for(int j = ; j <= n; j++)
if(v[j] != && lowcost[j] > mx){
x = j;
mx = lowcost[j];
} v[x] = ;
sum += lowcost[x];
for(int j = ; j <= n; j++)
{
double tmp = -l*abs(p[x].z - p[j].z) + Edge[x][j];
if(v[j] != && tmp > lowcost[j])
lowcost[j] = tmp;
}
}
if(sum>=)return ;
return ;
}
int main()
{
while(scanf("%d", &n) != EOF && n)
{
for(int i = ; i <= n; i++)
scanf("%d%d%d", &p[i].x, &p[i].y, &p[i].z);
for(int i = ; i <= n; i++)
for(int j = ; j <= n; j++)
Edge[i][j] = cal(i, j); double l = 0.0, r = 100.0, mid,ans;
while(r - l > 0.0000001)
{
mid = (l + r) / ;
if(prim(mid)) l = mid,ans=mid;
else r = mid;
}
printf("%.3f\n", /ans);
}
return ;
}

poj2728 生成树01分数规划 (二分答案)的更多相关文章

  1. POJ2728 最小比率生成树/0-1分数规划/二分/迭代(迭代不会)

    用01分数规划 + prime + 二分 竟然2950MS惊险的过了QAQ 前提是在TLE了好几次下过的 = = 题目意思:有n个村庄,村庄在不同坐标和海拔,现在要对所有村庄供水,只要两个村庄之间有一 ...

  2. poj2728 最小比率生成树——01分数规划

    题目大意: 有n个村庄,村庄在不同坐标和海拔,现在要对所有村庄供水, 只要两个村庄之间有一条路即可,建造水管距离为坐标之间的欧几里德距离,费用为海拔之差, 现在要求方案使得费用与距离的比值最小,很显然 ...

  3. POJ 2728 Desert King(最优比率生成树 01分数规划)

    http://poj.org/problem?id=2728 题意: 在这么一个图中求一棵生成树,这棵树的单位长度的花费最小是多少? 思路: 最优比率生成树,也就是01分数规划,二分答案即可,题目很简 ...

  4. 2018年东北农业大学春季校赛 I wyh的物品【01分数规划/二分】

    链接:https://www.nowcoder.com/acm/contest/93/I来源:牛客网 题目描述 wyh学长现在手里有n个物品,这n个物品的重量和价值都告诉你,然后现在让你从中选取k个, ...

  5. bzoj 4753: [Jsoi2016]最佳团体【01分数规划+二分+树上背包】

    01分数规划,二分答案然后把判别式变成Σp[i]-Σs[i]*mid>=0,然后树上背包判断,设f[i][j]为在i点子树里选j个的最大收益,随便背包一下就好 最丧病的是神卡常--转移的时候要另 ...

  6. POJ - 3111 K Best 0-1分数规划 二分

    K Best Time Limit: 8000MS   Memory Limit: 65536K Total Submissions: 12812   Accepted: 3290 Case Time ...

  7. POJ - 2976 Dropping tests(01分数规划---二分(最大化平均值))

    题意:有n组ai和bi,要求去掉k组,使下式值最大. 分析: 1.此题是典型的01分数规划. 01分数规划:给定两个数组,a[i]表示选取i的可以得到的价值,b[i]表示选取i的代价.x[i]=1代表 ...

  8. Desert King (poj 2728 最优比率生成树 0-1分数规划)

    Language: Default Desert King Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 22113   A ...

  9. 【Luogu】P3705新生舞会(费用流+分数规划+二分答案)

    题目链接 本来以为自己可以做出来,结果……打脸了 (貌似来wc立了好几个flag了,都没竖起来) 不过乱蒙能蒙出一个叫“分数规划”的东西的式子还是很开心的 观察$C=\frac{a_{1}+a_{2} ...

随机推荐

  1. vuex使用示例

    项目代码结构↓ src内容↓ store内容↓ 理解思路: component中的组件发送修改请求,由action.js处理请求,mutation修改请求,修改请求后state改变,从getter.j ...

  2. Django学习手册 - 如何安装django 和 python ?

    整体步骤阐述:(windows环境下) 步骤一,下载python安装包 (和 jiango 压缩包) 步骤二,安装python 配置python的环境变量 步骤三,安装djang 方式一:pip in ...

  3. 对象关系映射(ORM)框架GreenDao简介和基本使用

    官网上的介绍,greenDAO 是一个将对象映射到 SQLite 数据库中的轻量且快速的 ORM 解决方案. GreenDao特点 性能最大化,可能是Android平台上最快的ORM框架 易于使用的A ...

  4. ARMV7-M数据手册---Part A :Application Level Architecture---A1 Introduction

    1.前言 本章主要介绍了ARMV7体系结构及其定义的属性,以及本手册定义的ARMV7M属性. 主要包括: ARMV7体系结构和属性 ARMV7M属性 ARMV7M扩展 2. ARMV7体系结构和属性 ...

  5. WYSIWYG WebBuilder 所见即所得工具

    WYSIWYG WebBuilder  所见即所得工具: http://www.wysiwygwebbuilder.com/

  6. Linux查看压缩文件内容【转】

    查看一个归档或者压缩文件的内容而无需解压它 得益于 Linux 社区,有很多命令行工具可以来达成上面的目标.下面就让我们来看看使用它们的一些示例. 1.使用 vim 编辑器 vim 不只是一个编辑器, ...

  7. python性能分析之cProfile模块

    cProfile是标准库内建的分析工具的其中一个,另外两个是hotshot和profile -s cumulative -s cumulative开关告诉cProfile对每个函数累计花费的时间进行排 ...

  8. Error occurred in deployment step 'Retract Solution': xxx 无法反序列化,因为它没有公共的默认构造函数

    一.环境:SharePoint 2016 + Visual Studio 2015, 二.错误描述: 错误1:帮朋友写个计时器Demo,部署位置GAC,来回部署几次后,vs2015报错: 严重性 代码 ...

  9. linux下.bashrc文件 /PATH环境变量修改 /提示符修改

    1) .bashrc文件 在linux系统普通用户目录(cd /home/xxx)或root用户目录(cd /root)下,用指令ls -al可以看到4个隐藏文件, .bash_history   记 ...

  10. 转-C语言中.h和.c文件解析

    C语言中.h和.c文件解析(很精彩)   简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:       1.预处理阶段 2.词 ...