我对二分的理解:https://www.cnblogs.com/AKMer/p/9737477.html

题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=5281

题目要求我们最大化\(\frac{\sum{t_i}}{\sum{w_i}}\),我们可以二分它的值\(x\)。如果存在某一种方案使得\(\frac{\sum{t_i}}{\sum{w_i}}>=x\)

,我们可以将其转化成有一种方案满足\(\sum{t_i}-\sum{w_i*x}>=0\)。于是乎我们就可以将\(t_i-w_i*x\)作为一只奶牛的权值,体重为空间来做背包,判断是否可以用\(W\)的体积背出大于等于\(0\)的权值。而且显然,\(t_i-w_i*x\)大于等于\(0\)的奶牛肯定会被选中,那么如果需要用到\(t_i-w_i*x\)为负数的奶牛,肯定是尽量少选。所以我们在背包时,如果从某个状态转以后体积大于\(W\)了,就可以停下转移了,因为再加也没用了。

时间复杂度:\(O(log1e9*n*W)\)

空间复杂度:\(O(n)\)

代码如下:

#include <cstdio>
#include <algorithm>
using namespace std; const double eps=1e-6,inf=1e9; int n,W;
int w[255],t[255];
double now[255],f[1005]; int read() {
int x=0,f=1;char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
for(;ch>='0'&&ch<='9';ch=getchar())x=x*10+ch-'0';
return x*f;
} bool check(double limit) {
for(int i=1;i<=n;i++)
now[i]=1.0*t[i]-limit*w[i];//更改权值
for(int i=1;i<=W;i++)f[i]=-inf;
for(int i=1;i<=n;i++) {
for(int j=W;j>=W-w[i]&&~j;j--)
f[W]=max(f[W],f[j]+now[i]);//转移后大于W的只转移一次
for(int j=W-1;j>=w[i];j--)
f[j]=max(f[j],f[j-w[i]]+now[i]);//背包
}
return f[W]>eps;
} int main() {
n=read(),W=read();
for(int i=1;i<=n;i++)
w[i]=read(),t[i]=read();
double l=0,r=1e3;
while(l+eps<r) {
double mid=(l+r)/2;
if(check(mid))l=mid;//二分x,[0,l]都是可以凑出来的值
else r=mid;
}
printf("%d\n",(int)(l*1000));//l是最大的那一个
return 0;
}

BZOJ5281:[Usaco2018 Open]Talent Show的更多相关文章

  1. BZOJ5281: [Usaco2018 Open]Talent Show(01分数规划&DP)

    5281: [Usaco2018 Open]Talent Show Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 166  Solved: 124[S ...

  2. BZOJ5281: [Usaco2018 Open]Talent Show 01分数规划+01背包

    Description FarmerJohn要带着他的N头奶牛,方便起见编号为1…N,到农业展览会上去,参加每年的达牛秀!他的第i头奶牛重 量为wi,才艺水平为ti,两者都是整数.在到达时,Farme ...

  3. bzoj 5281 [Usaco2018 Open]Talent Show——0/1分数规划

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5281 把分子乘1000,就能在整数里做了. 这种水题也花了这么久…… #include< ...

  4. [Usaco2018 Open]Talent Show

    Description FarmerJohn要带着他的N头奶牛,方便起见编号为1-N,到农业展览会上去,参加每年的达牛秀!他的第i头奶牛重量为wi,才艺水平为ti,两者都是整数.在到达时,Farmer ...

  5. bzoj 5281: [Usaco2018 Open]Talent Show【dp】

    注意到sum_t比较小,所以设f[i][j]为选前i头牛,当前sum_t为j的最小sum_w值,转移是f[i][j]=min(f[i-1][j],f[i-1][j-t[i]]+w[i]),然后i维用滚 ...

  6. BZOJ 5281--[Usaco2018 Open]Talent Show(分数规划&单调队列&DP)

    5281: [Usaco2018 Open]Talent Show Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 79  Solved: 58[Sub ...

  7. vijos 1563 疯狂的方格取数

    P1653疯狂的方格取数 Accepted 标签:天才的talent[显示标签]   背景 Due to the talent of talent123,当talent123做完NOIP考了两次的二取 ...

  8. 01分数规划初探?!By cellur925

    都要\(NOIp\)了为啥我还在看这种玄学玩意..... \(01\)分数规划:这是一个问题模型\(qwq\),一般是在求\[\frac{\sum_{i=1}^{n} a_i*x_i}{\sum_{i ...

  9. java web 开发三剑客 -------电子书

    Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知In ...

随机推荐

  1. 解决 ie 返回json提示下载 ResponseEntity方法

    js 配合java  springMVC后台,成功后返回消息,chrom ff都正常,只有IE提交后返回的JSON提示下载,查看类型 application/json  google后发现原来是IE不 ...

  2. easyUI参数传递Long型时,前台解析出错的问题——SKY

    果发现datagrid在显示Long类型数据时有问题.问题如下:比如一个数据ID为20121229101239002,经过转换之后的JSON数据也没有问题,但是在显示的时候就会显示为201212291 ...

  3. SpringMVC拦截器实现登录认证

    项目结构如图: 需要的jar:有springMVC配置需要的jar和jstl需要的jar SpringMVC包的作用说明: aopalliance.jar:这个包是AOP联盟的API包,里面包含了针对 ...

  4. WndProc漏写override会发生什么情况?

    试图改写TForm1(注意,不是TForm类)的WndProc函数,从而达到某些目的.程序如下: unit Unit1; interface uses Windows, Messages, SysUt ...

  5. Linux备份和回复mysql数据库

    备份:mysqldump -u root -p密码 数据库名>/home/data.bak   mysqldump -u root -p密码 数据库名.表名>/home/data.bak ...

  6. 使用阿里云的PyPI源

    方法1:(1)创建pip.conf文件 (2).编辑如下内容 [global] index-url = http://mirrors.aliyun.com/pypi/simple/ [install] ...

  7. C#自己写的第一个小程序,庆祝一下

    Packages.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; na ...

  8. linux查看当前文件夹下每个文件大小

    查看当前文件夹下每个文件大小 并会给出当前文件大小总和,后面加具体的文件名会显示具体的文件大小 ls -lht 把*换成具体的文件名会显示具体的文件大小 du -sh *

  9. 动态创建selectjs 操作select和option

    1.动态创建select function createSelect(){ var mySelect = document.createElement("select"); myS ...

  10. java项目常用架构

    三层架构 : 界面层/表现层 UI 业务逻辑层 BLL 针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理. 数据访问层 DAL 访问数据库 mvc : 而 MVC 是在三层架构的基 ...