首页 > 其他分享 >01分数规划

01分数规划

时间:2022-08-24 00:55:47浏览次数:48  
标签:分数 01 cheknum int res sum mid times 规划

01分数规划

经典例题:POJ2976

给定 \(n\) 个物品的价值 \(a\) 和 花费 \(b\) ,取其中的 \(k\) 个物品,求 \(\sum a[i] / \sum b[i]\) 的最大值。

题解

假设 \(\sum a[i] / \sum b[i] = x\) ,则:

当 \(x\) 不是最优解时,\(\sum a[i] / \sum b[i] \ge x\) 成立,则存在一种组合使 \(\sum(a[i]-x\times b[i]) > 0\) 成立

为了尽可能让解更大,我们需要尽可能使该式成立,这样就可以继续找更大的解。

为了尽可能使该式成立,我们需要取最大的 \(k\) 个 \((a[i]-x\times b[i])\) ,

若 \(\sum(a[i]-x\times b[i]) > 0\) 成立, \(x\) 就不是最优解 ;

也就是说不断二分 \(x\) 的值,就可以找到最优解:

设 \(cheknum=\sum(a[i]-x\times b[i])\) ,

若 \(cheknum > 0\) , 则 \(x\) 可以更大

若 \(cheknum=0\) , 则 \(x\) 是最优解

若 \(cheknum<0\) , 则 \(x\) 需要更小

代码:

bool chek(int x)
{
    rep(i,1,n) c[i]=a[i]-x*b[i];
    sort(c+1,c+n+1,cmp);//从大到小
    int res=0;
    rep(i,1,k) res+=c[i];
    return res >= 0;
    
}

void solv()
{
    int l=0,r=maxx;
    while(r - l > eps)
    {
        double mid = (r+l)/2;
        if(chek(mid)) l=mid;//更大
        else r=mid;//变小
    }
    printf("%lf",l);
}

标签:分数,01,cheknum,int,res,sum,mid,times,规划
From: https://www.cnblogs.com/subtlemaple/p/16618390.html

相关文章

  • PA2013 Euler 社论
    PA2013Euler给一个正整数\(n\),找到所有的\(a\)使得\(\varphi(a)=n\),其中\(\varphi\)是Eulertotientfunction.\(n\le10^{10}\).令\(\displaystylen=\pr......
  • 《GB27887-2011》PDF下载
    《GB27887-2011机动车儿童乘员用约束系统》PDF下载《GB27887-2011》简介本标准规定了机动车儿童乘员用约束系统术语、定义,在车辆上的安装及固定要求,约束系统的结构,以及......
  • 《GB27631-2011》PDF下载
    《GB27631-2011发酵酒精和白酒工业水污染物排放标准》PDF下载《GB27631-2011》简介本标准规定了发酵酒精和白酒工业企业或生产设施水污染物排放限值、监测和监控要求,以......
  • 《GB27632-2011》PDF下载
    《GB27632-2011橡胶制品工业污染物排放标准》PDF下载《GB27632-2011》简介本标准规定了橡胶制品工业企业或生产设施水污染物和大气污染物的排放限值、监测和监控要求,以......
  • 《GB12523-2011》PDF下载
    《GB12523-2011建筑施工场界环境噪声排放标准》PDF下载《GB12523-2011》简介本标准规定了建筑施工场界环境噪声排放限值及测定方法;本标准适用于周围有噪声敏感建筑物......
  • Spark基础入门(01)—RDD
    1,基本概念RDD(ResilientDistributedDataset):弹性分布式数据集它是Spark中最基本的数据抽象,是编写Spark程序的基础。简单的来讲,一个Spark程序可以概括为:<输入>=>[转......
  • [2001年NOIP提高组] 数的划分
    为了确保出现过的方案不重复,可以规定在后面的分组中的数必须要大于前面分组中的数,x代表上一个出现过的数,初值为1,只要让下一个数从x开始循环,便可达成上述方案。s代表还需......
  • 2018软测错题集
    1、     ......
  • [NOIP2017 提高组] 奶酪
    题目链接:https://www.luogu.com.cn/problem/P3958试题分析:题目给出了球心坐标与半径,并且给出了奶酪高度,询问我们是否能从奶酪底部到奶酪顶部。我们可以分出以下几种情况:......
  • 01-React基础(JSX, State, Refs, Props组件交互, Event, 生命周期)
    引入JS#react开发JSreact.development.js#reactdom渲染JSreact-dom.development.js#jsx语法转换JSbabel.min.js#参数传值校验JSprop-types.jsJSX语法#......