都要\(NOIp\)了为啥我还在看这种玄学玩意.....

\(01\)分数规划:这是一个问题模型\(qwq\),一般是在求$$\frac{\sum_{i=1}^{n} a_ix_i}{\sum_{i=1}^{n} b_ix_i}$$

其中\(x_i\)为\(0\)或\(1\)。

通俗地讲,也就是给定\(n\)对整数\(a_i\)和\(b_i\),从中选出若干对,使选出的数对 的\(a_i\)之和与\(b_i\)之和的商最大。

中间的思维过程就暂时不给出了::>_<::...直接江算法惹\(qwq\)。

方法:二分最终答案(实数)。当二分的值为\(mid\),检查\(\sum_{i=1}^{n}(a_i-mid*b_i)*x_i\)的最大值是否非负。往往这里是难点,其他可能都是一些套路化的东西。

我们看一道题:P4377 [USACO18OPEN]Talent Show。

因为要求总质量大于等于\(W\),这就是本题的约束,我们如何在这个条件下最大值,考虑\(01\)背包。

细节:背包初值为负无穷。但是题解写的很玄学...这是一个待填坑。

#include<cstdio>
#include<algorithm>
#include<cstring> using namespace std;
const double eps=1e-8; int n,W;
int w[500],t[500];
double f[2000];
//f[i]表示重量为i的最大价值
bool check(double x)
{
for(int i=1;i<=W;i++) f[i]=-1e9;
f[0]=0;
int lim=f[W];
for(int i=1;i<=n;i++)
for(int j=W;j>=0;j--)
if(f[j]!=lim)
f[min(W,j+w[i])]=max(f[min(W,j+w[i])],f[j]+t[i]-1.0*x*w[i]);
return f[W]>=0;
} int main()
{
scanf("%d%d",&n,&W);
for(int i=1;i<=n;i++)
scanf("%d%d",&w[i],&t[i]),t[i]*=1000;
double l=0,r=1e9;
while(l+eps<r)
{
double mid=(l+r)/2;
if(check(mid)) l=mid;
else r=mid;
}
int ans=l;
printf("%d",ans);
return 0;
}

01分数规划初探?!By cellur925的更多相关文章

  1. POJ3621Sightseeing Cows[01分数规划 spfa(dfs)负环 ]

    Sightseeing Cows Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9703   Accepted: 3299 ...

  2. ZOJ 2676 Network Wars ★(最小割算法介绍 && 01分数规划)

    [题意]给出一个带权无向图,求割集,且割集的平均边权最小. [分析] 先尝试着用更一般的形式重新叙述本问题.设向量w表示边的权值,令向量c=(1, 1, 1, --, 1)表示选边的代价,于是原问题等 ...

  3. POJ 2728 Desert King ★(01分数规划介绍 && 应用の最优比率生成树)

    [题意]每条路径有一个 cost 和 dist,求图中 sigma(cost) / sigma(dist) 最小的生成树. 标准的最优比率生成树,楼教主当年开场随手1YES然后把别人带错方向的题Orz ...

  4. 【Earthquake, 2001 Open 】 0-1 分数规划

    71  奶牛施工队一场地震把约翰家园摧毁了,坚强的约翰决心重建家园.约翰已经修复了 N 个牧场,他需要再修复一些道路把它们连接起来.碰巧的是,奶牛们最近也成立了一个工程队,专门从事道路修复.而然,奶牛 ...

  5. POJ 2976 Dropping tests 01分数规划

    给出n(n<=1000)个考试的成绩ai和满分bi,要求去掉k个考试成绩,使得剩下的∑ai/∑bi*100最大并输出. 典型的01分数规划 要使∑ai/∑bi最大,不妨设ans=∑ai/∑bi, ...

  6. 【转】[Algorithm]01分数规划

    因为搜索关于CFRound277.5E题的题解时发现了这篇文章,很多地方都有值得借鉴的东西,因此转了过来 原文:http://www.cnblogs.com/perseawe/archive/2012 ...

  7. codevs 1183 泥泞的道路 01分数规划

    题目链接 题目描述 Description CS有n个小区,并且任意小区之间都有两条单向道路(a到b,b到a)相连.因为最近下了很多暴雨,很多道路都被淹了,不同的道路泥泞程度不同.小A经过对近期天气和 ...

  8. Dropping tests(01分数规划)

    Dropping tests Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8176   Accepted: 2862 De ...

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

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

随机推荐

  1. 如何在Mac的Finder中显示/usr、/tmp、/var等隐藏目录

    原文链接: http://blog.csdn.net/yhawaii/article/details/7435918 Finder中默认是不显示/usr./tmp./var等隐藏目录的,通过在终端中输 ...

  2. python类初探

    class human: is_alive=True is_man=True def __init__(self,age): print('this is __init__() method, whi ...

  3. python学习笔记:第五天( 列表、元组)

    Python3 列表 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见 ...

  4. Java企业微信开发_10_未验证域名归属,JS-SDK功能受限

    1.现象: 在企业微信后台填写可信域名后,提示:未验证域名归属,JS-SDK功能受限,如下图: 点击“申请域名校验”后, 注意:域名根目录 当时一直不清楚这个域名根目录在哪里,最后让我给试出来了 2. ...

  5. BaseServlet优化Servlet,实现类似struts2的一些简单效果

    package cn.itcast.web.servlet; import java.io.IOException; import javax.servlet.ServletException; im ...

  6. L89

    His voice was hoarse after several hours' speech.Attributive adjectives precede the noun.I gave the ...

  7. zero to one (4)

    复盘--天下武功唯快不破 There is no martial art is indefectible, while the fastest speed is the only way for lo ...

  8. 1131 Subway Map(30 分)

    In the big cities, the subway systems always look so complex to the visitors. To give you some sense ...

  9. ACM学习历程—NPU 2015年陕西省程序设计竞赛网络预赛(正式赛)F题 和谐的比赛(递推)

    Description 今天西工大举办了一场比赛总共有m+n人,但是有m人比较懒没带电脑,另外的n个人带了电脑.不幸的是,今天机房的电脑全坏了只能用带的电脑,一台电脑最多两人公用,确保n>=m. ...

  10. CSS 浏览器兼容

    1.  兼容 IF <!--[if lte IE 7]> <style type="text/css"> .menu { position:relative ...