[USACO18OPEN]Talent Show

有N对数\(\{w_i\}\),\(\{t_i\}\),选出几对数,使\(w_i\)之和大于W,并且使t之和除以w之和乘以1000尽可能大,\(1≤N≤250,1≤W≤1000\)。

显然为分数规划,于是写出二分式\(\sum x_i(t_i-w_is)\),现在问题在于如何选出括号里最大的数,并且使它们的\(w_i\)之和大于W,自然为一最优化问题,考虑递推,但是注意到题目很像背包,于是按照01背包的办法就可以求出最优解,注意边界所以要初始化无限小,其他照01分数规划的套路即可。

参考代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#define il inline
#define ri register
#define exact 0.000001
using namespace std;
int a[251],b[251],n,w;
double c[251],dp[1001];
il bool check(double);
il double dfs(double,double);
template<class free>il free Max(free,free);
int main(){int i;scanf("%d%d",&n,&w);for(i=1;i<=n;++i)scanf("%d%d",&b[i],&a[i]),a[i]*=1000;printf("%.0lf",dfs(0,250000)-0.5);return 0;
}
template<class free>
il free Max(free a,free b){return a>b?a:b;
}
il bool check(double x){int i,j;for(i=1;i<=w;++i)dp[i]=-1e19;for(i=1;i<=n;++i){c[i]=a[i]-b[i]*x;for(j=w;j>=w-b[i]&&j>=0;--j)dp[w]=Max(dp[w],dp[j]+c[i]);for(j=w;j>=b[i];--j)dp[j]=Max(dp[j-b[i]]+c[i],dp[j]);}return dp[w]>exact;
}
il double dfs(double l,double r){double mid;while(l+exact<r){mid=(l+r)/2;if(check(mid))l=mid+exact;else r=mid-exact;}return (l+r)/2;
}

转载于:https://www.cnblogs.com/a1b3c7d9/p/10804880.html

[USACO18OPEN]Talent Show相关推荐

  1. [学习笔记]0/1分数规划

    对于一类:每个元素有两个属性A,B 选择若干个元素,使得$\frac{\sum A_i}{\sum B_i}$取到最值. 这类问题可以采用二分的方法.然后构造出模型用于判定. 推导: 二分mid 如果 ...

  2. PAT甲级1062 Talent and Virtue:[C++题解]结构体、哈希表

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 分4个vector,单独排序即可. ac代码 #include<bits/stdc++.h> using namespa ...

  3. PAT-B 1015. 德才论(同PAT 1062. Talent and Virtue)

    1. 在排序的过程中,注意边界的处理(小于.小于等于) 2. 对于B-level,这题是比較麻烦一些了. 源代码: #include <cstdio> #include <vecto ...

  4. 1062. Talent and Virtue (25)

    About 900 years ago, a Chinese philosopher Sima Guang wrote a history book in which he talked about ...

  5. 【2017年第3期】Talent Network:一个基于设计思维的企业社交网络服务

    夏帆, 丁铖, 钱卫宁, 周傲英, Gopakumar Gopalakrishnan, Anjaneyulu Passala 华东师范大学 中图分类号:TP391     文献标识码:A doi:10 ...

  6. 1062. Talent and Virtue (25)-PAT甲级真题

    About 900 years ago, a Chinese philosopher Sima Guang wrote a history book in which he talked about ...

  7. 洛谷 P4379 [USACO18OPEN]Lemonade Line

    P4379 [USACO18OPEN]Lemonade Line 题目描述 这是农场上一个炎热的夏日,Farmer John要给他的 NN 头奶牛发柠檬汽水了!所有的 NN 头奶牛(方便起见,编号为  ...

  8. Casbin明日之星预选生计划-Talent for Casbin 2021(长期招聘)

    Casbin明日之星预选生计划-Talent for Casbin 2021(长期招聘) "Casbin明日之星预选生计划-Talent for Casbin 2021"是什么? ...

  9. Asia's pollution exodus: Firms struggle to woo top talent 逃离亚洲空气污染:企业难以吸引顶尖人才

    Asia's pollution exodus: Firms struggle to woo top talent 逃离亚洲空气污染:企业难以吸引顶尖人才 From smog breaks to po ...

最新文章

  1. 拍下首张黑洞照片的团队获300万美元奖金:2020年科学突破奖揭晓
  2. python 数值的整数次方
  3. Docker搭建Nacos1.3+Seata1.4+MySQL8分布式事务(服务端)
  4. Delphi 的运算符重载(1)
  5. mysql主从安装配置_如何安装和配置mysql主从同步
  6. C++多线程快速入门(二)共享数据同步以及数据竞争
  7. 汇编常用命令、指令一览
  8. destoon网站mysql分表_destoon : 常用数据库操作
  9. eclipse lombok 标红_无法使Lombok项目在Eclipse上运行
  10. zend studio php 运行,Zend Studio使用教程:使用PHP 7进行开发(一)
  11. [附源码]计算机毕业设计JAVA 宠物医院管理系统
  12. 使用python模块 将中文大写汉字转化成阿拉伯数字
  13. UE5 c++ 写一个livelink插件
  14. (附源码)spring boot跨境电商系统 毕业设计 211003
  15. ipv6 dns修改方法
  16. 渗透测试工程师面试题大全(三)
  17. Clipper库 | 类型和填充规则
  18. 考研复试c语言面试题三峡,2017年三峡大学C语言程序设计(复试)考研真题硕士研究生入学考试试题...
  19. java输出华氏摄氏温度转换表_C语言入门教程-示例:编写能够打印华氏-摄氏温度转换表的程序...
  20. 什么是Nodejs?

热门文章

  1. 几种简单的社交网站的标志按钮
  2. android sd卡相关avc,Android 5.x 权限问题解决方法
  3. c语言怎么读取mhx文件内容,C语言重新学习――基础杂类
  4. 7-4 特殊数字 (10 分)
  5. Maven 依赖中 scope 详解
  6. c语言程序设计实验二模板,C语言程序设计实验二.doc
  7. Python 多线程总结
  8. python 之禅 import this
  9. 跳台阶问题:动态规划,公式
  10. 网站SEO优化过程中的几个注意事项