5281: [Usaco2018 Open]Talent Show

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 166  Solved: 124
[Submit][Status][Discuss]

Description

FarmerJohn要带着他的N头奶牛,方便起见编号为1…N,到农业展览会上去,参加每年的达牛秀!他的第i头奶牛重
量为wi,才艺水平为ti,两者都是整数。在到达时,FarmerJohn就被今年达牛秀的新规则吓到了:
(一)参加比赛的一组奶牛必须总重量至少为W
(这是为了确保是强大的队伍在比赛,而不仅是强大的某头奶牛),并且
(二)总才艺值与总重量的比值最大的一组获得胜利。
FJ注意到他的所有奶牛的总重量不小于W,所以他能够派出符合规则(一)的队伍。帮助他确定这样的队伍中能够
达到的最佳的才艺与重量的比值。

Input

输入的第一行包含N和W。下面N行,每行用两个整数wi和ti描述了一头奶牛。
1≤N≤250
1≤W≤1000
1≤wi≤10^6
1≤ti≤10^3

Output

请求出Farmer用一组总重量最少为W的奶牛最大可能达到的总才艺值与总重量的比值。
如果你的答案是A,输出1000A向下取整的值,以使得输出是整数
(当问题中的数不是一个整数的时候,向下取整操作在向下舍入到整数的时候去除所有小数部分)。

Sample Input

3 15
20 21
10 11
30 31

Sample Output

1066
在这个例子中,总体来看最佳的才艺与重量的比值应该是仅用一头才艺值为11、重量为10的奶牛,但是由于我们需
要至少15单位的重量,最优解最终为使用这头奶牛加上才艺值为21、重量为20的奶牛。这样的话才艺与重量的比值
为(11+21)/(10+20)=32/30=1.0666666...,乘以1000向下取整之后得到1066。
 
 
思路:分子分母的最大形式显然需要二分后01分数规划求最大。 二分到mid的时候,我们按照t-w*mid排序。 这个时候出现问题了,我们是选择最前面几个直到体积大于等于W吗,显然不是的。 比如需要体积W=120的东西,现在有三种(w,t):(100,100),(70,35),(20,9); 显然选择1,3的比值比选择1,2搞,尽管2的性价比比3高。   主要是因为我们只需要W=120,2的性价比虽然高于3,但是无用的w也多了,拉低了整体性价比。
#include<bits/stdc++.h>
using namespace std;
const int maxn=;
struct in{
int w,t; double xjb;
friend bool operator <(in w,in v){ return w.xjb>v.xjb; }
}s[maxn];int N,W; double dp[maxn];
bool check(double Mid)
{
for(int i=;i<=N;i++) s[i].xjb=(double)s[i].t-Mid*s[i].w;
sort(s+,s+N+);
for(int i=;i<=W;i++) dp[i]=-1000000000.0; dp[]=0.0;
for(int i=;i<=N;i++){
for(int j=W;j>=;j--){
if(j+s[i].w>=W){
if(dp[j]+s[i].xjb>=) return true;
}
else dp[j+s[i].w]=max(dp[j+s[i].w],dp[j]+s[i].xjb);
}
}
return false;
}
int main()
{
scanf("%d%d",&N,&W);
for(int i=;i<=N;i++) scanf("%d%d",&s[i].w,&s[i].t);
double L=,R=1000000.0,Mid,ans=; int num=;
while(num--){
Mid=(L+R)/;
if(check(Mid)) L=Mid,ans=L;
else R=Mid;
}
printf("%d\n",(int)(ans*));
return ;
}
 
 
 
 

BZOJ5281: [Usaco2018 Open]Talent Show(01分数规划&DP)的更多相关文章

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

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

  2. bzoj5281/luogu4377 Talent Show (01分数规划+背包dp)

    就是01分数规划的思路,只不过当把w[i]-r*t[i]>0的选完以后如果w值还没达到要求,那就再01背包dp一下就好了(dp时w值>W的时候就存在W里就不会爆内存了). (跑得很慢..大 ...

  3. luogu 4377 Talent show 01分数规划+背包dp

    01分数规划+背包dp 将分式下面的部分向右边挪过去,通过二分答案验证, 注意二分答案中如果验证的mid是int那么l=mid+1,r=mid-1,double类型中r=mid,l=mid; 背包dp ...

  4. jzoj3454 表白(love)解题报告(01分数规划+DP)

    题目链接:https://jzoj.net/senior/#contest/show/2414/2 题目描述: 鸡腿是CZYZ的著名DS,但是不想追妹子的DS不是好GFS,所以鸡腿想通过表白来达到他追 ...

  5. bzoj 5281 Talent Show —— 01分数规划+背包

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5281 二分一个答案比值,因为最后要*1000,不如先把 v[] *1000,就可以二分整数: ...

  6. 【BZOJ5281】Talent Show(分数规划)

    [BZOJ5281]Talent Show(分数规划) 题面 BZOJ 洛谷 题解 二分答案直接就是裸的分数规划,直接跑背包判断是否可行即可. #include<iostream> #in ...

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

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

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

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

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

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

随机推荐

  1. 【cs231n】图像分类笔记

    前言 首先声明,以下内容绝大部分转自知乎智能单元,他们将官方学习笔记进行了很专业的翻译,在此我会直接copy他们翻译的笔记,有些地方会用红字写自己的笔记,本文只是作为自己的学习笔记.本文内容官网链接: ...

  2. 【jdk源码分析】java多线程开启的三种方式

    1.继承Thread类,新建一个当前类对象,并且运行其start()方法 package com.xiaostudy.thread; /** * @desc 第一种开启线程的方式 * @author ...

  3. The SO_REUSEPORT socket option

    One of the features merged in the 3.9 development cycle was TCP and UDP support for the SO_REUSEPORT ...

  4. vc 导出函数/调用

    loader(exe): #include "stdafx.h" #include <Windows.h> #include <stdio.h> #defi ...

  5. Javascript 十移跳转页面

    <srcipty> var t = 10; function openwin(){ t -= 1; if( t==0){ location.href='prototype.html'; } ...

  6. C# ContentType: "application/json" 请求方式传json参数问题

    处理Http请求时遇到的ContentType为application/json方式,记录下这种Post请求方式下如何传json参数: var request = (HttpWebRequest)We ...

  7. Android显示框架:自定义View实践之绘制篇

    文章目录 一 View 二 Paint 2.1 颜色处理 2.2 文字处理 2.3 特殊处理 三 Canvas 3.1 界面绘制 3.2 范围裁切 3.3 集合变换 四 Path 4.1 添加图形 4 ...

  8. JavaScript权威指南--词法结构

    使用广泛,所有的浏览器(桌面.手机.屏蔽等等)都配有相应的JavaScript解析器. JavaScript解析器如何工作? 浏览器在读取HTML文件的时候,只有当遇到<script>标签 ...

  9. ORM--------Hibernate、Mybatis与Spring Data的区别

    1.概念: Hibernate :Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库.着力点对象 ...

  10. POJ 2891 中国剩余定理的非互质形式

    中国剩余定理的非互质形式 任意n个表达式一对对处理,故只需处理两个表达式. x = a(mod m) x = b(mod n) km+a = b (mod n) km = (a-b)(mod n) 利 ...