【BZOJ5281】Talent Show(分数规划)

题面

BZOJ

洛谷

题解

二分答案直接就是裸的分数规划,直接跑背包判断是否可行即可。

#include<iostream>
#include<cstdio>
using namespace std;
#define ll long long
#define MAX 255
inline int read()
{
int x=0;bool t=false;char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=true,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return t?-x:x;
}
int n,W,w[MAX],t[MAX];
double s[MAX],f[MAX][1010];
void upd(double &x,double y){if(x<y)x=y;}
int main()
{
n=read();W=read();
for(int i=1;i<=n;++i)
w[i]=read(),t[i]=read();
double l=0,r=10000;
while(r-l>1e-5)
{
double mid=(l+r)/2;
for(int i=1;i<=n;++i)s[i]=t[i]-mid*w[i];
for(int i=0;i<=n;++i)
for(int j=0;j<=W;++j)
f[i][j]=-1e18;
f[0][0]=0;
for(int i=1;i<=n;++i)
for(int j=0;j<=W;++j)
{
upd(f[i][j],f[i-1][j]);
upd(f[i][min(W,j+w[i])],f[i-1][j]+s[i]);
}
if(f[n][W]>=0)l=mid;
else r=mid;
}
int ans=l*1000;
printf("%d\n",ans);
return 0;
}

最新文章

  1. Linux 常用命令(持续补充)
  2. MVC5 网站开发之四 业务逻辑层的架构和基本功能
  3. 浅谈Android样式开发之layer-list
  4. Java数据结构——队列
  5. Unable to mount the CD/DVD image virtualbox解决方法
  6. Android布局_帧布局FrameLayout
  7. 在C语言中嵌入汇编语言
  8. C程序的内存分配
  9. hdu2993坡dp+二进制搜索
  10. 【C/C++学院】(24)Oracle数据库编程--管理oracle
  11. iOS开发——导入第三方库引起的unknown type name &#39;NSString&#39;
  12. Akka(1):Actor - 靠消息驱动的运算器
  13. HTML5轻松实现拍照上传功能[转载]
  14. struts快速入门第一篇 —— struts相关XML配置映射及讲解
  15. Android 音视频编解码——YUV视频格式详解
  16. 51nod“省选”模测第二场 C 小朋友的笑话(线段树 set)
  17. LeetCode Monotone Stack Summary 单调栈小结
  18. 用原生js+canvas实现五子棋
  19. Codeforces Round #512 E - Vasya and Good Sequences
  20. Python Tornado集成JSON Web Token方式登录

热门文章

  1. Android Layout属性笔记
  2. RocEDU.课程设计2018 第六组 第三周进展 博客补交
  3. 20155306 白皎 0day漏洞——漏洞利用原理之栈溢出利用
  4. # 20155319 Exp3 免杀原理与实践
  5. EZ 2018 04 21 NOIP2018 模拟赛(十) -LoliconAutomaton的退役赛
  6. 全方位Bindind分析
  7. 汇编-MOV指令
  8. Kubernetes学习之路(十九)之Kubernetes dashboard认证访问
  9. CF708D Incorrect Flow
  10. Vxlan抓包