[USACO18OPEN]Talent Show
[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相关推荐
- [学习笔记]0/1分数规划
对于一类:每个元素有两个属性A,B 选择若干个元素,使得$\frac{\sum A_i}{\sum B_i}$取到最值. 这类问题可以采用二分的方法.然后构造出模型用于判定. 推导: 二分mid 如果 ...
- PAT甲级1062 Talent and Virtue:[C++题解]结构体、哈希表
文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 分4个vector,单独排序即可. ac代码 #include<bits/stdc++.h> using namespa ...
- PAT-B 1015. 德才论(同PAT 1062. Talent and Virtue)
1. 在排序的过程中,注意边界的处理(小于.小于等于) 2. 对于B-level,这题是比較麻烦一些了. 源代码: #include <cstdio> #include <vecto ...
- 1062. Talent and Virtue (25)
About 900 years ago, a Chinese philosopher Sima Guang wrote a history book in which he talked about ...
- 【2017年第3期】Talent Network:一个基于设计思维的企业社交网络服务
夏帆, 丁铖, 钱卫宁, 周傲英, Gopakumar Gopalakrishnan, Anjaneyulu Passala 华东师范大学 中图分类号:TP391 文献标识码:A doi:10 ...
- 1062. Talent and Virtue (25)-PAT甲级真题
About 900 years ago, a Chinese philosopher Sima Guang wrote a history book in which he talked about ...
- 洛谷 P4379 [USACO18OPEN]Lemonade Line
P4379 [USACO18OPEN]Lemonade Line 题目描述 这是农场上一个炎热的夏日,Farmer John要给他的 NN 头奶牛发柠檬汽水了!所有的 NN 头奶牛(方便起见,编号为 ...
- Casbin明日之星预选生计划-Talent for Casbin 2021(长期招聘)
Casbin明日之星预选生计划-Talent for Casbin 2021(长期招聘) "Casbin明日之星预选生计划-Talent for Casbin 2021"是什么? ...
- 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 ...
最新文章
- 拍下首张黑洞照片的团队获300万美元奖金:2020年科学突破奖揭晓
- python 数值的整数次方
- Docker搭建Nacos1.3+Seata1.4+MySQL8分布式事务(服务端)
- Delphi 的运算符重载(1)
- mysql主从安装配置_如何安装和配置mysql主从同步
- C++多线程快速入门(二)共享数据同步以及数据竞争
- 汇编常用命令、指令一览
- destoon网站mysql分表_destoon : 常用数据库操作
- eclipse lombok 标红_无法使Lombok项目在Eclipse上运行
- zend studio php 运行,Zend Studio使用教程:使用PHP 7进行开发(一)
- [附源码]计算机毕业设计JAVA 宠物医院管理系统
- 使用python模块 将中文大写汉字转化成阿拉伯数字
- UE5 c++ 写一个livelink插件
- (附源码)spring boot跨境电商系统 毕业设计 211003
- ipv6 dns修改方法
- 渗透测试工程师面试题大全(三)
- Clipper库 | 类型和填充规则
- 考研复试c语言面试题三峡,2017年三峡大学C语言程序设计(复试)考研真题硕士研究生入学考试试题...
- java输出华氏摄氏温度转换表_C语言入门教程-示例:编写能够打印华氏-摄氏温度转换表的程序...
- 什么是Nodejs?