P4377 [USACO18OPEN] Talent Show G

P4377 [USACO18OPEN] Talent Show G

[P4377 USACO18OPEN] Talent Show G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

文章目录

  • P4377 [USACO18OPEN] Talent Show G
    • 题目
      • 题目描述
      • 输入格式
      • 输出格式
      • 样例 #1
        • 样例输入 #1
        • 样例输出 #1
      • 提示
          • 样例解释
          • 数据规模与约定
    • 思路
    • code

题目

题目描述

Farmer John 要带着他的 n n n 头奶牛,方便起见编号为 1 … n 1\ldots n 1n,到农业展览会上去,参加每年的达牛秀!他的第 i i i 头奶牛重量为 w i w_i wi,才艺水平为 t i t_i ti,两者都是整数。

在到达时,Farmer John 就被今年达牛秀的新规则吓到了:

(一)参加比赛的一组奶牛必须总重量至少为 W W W(这是为了确保是强大的队伍在比赛,而不仅是强大的某头奶牛),并且。

(二)总才艺值与总重量的比值最大的一组获得胜利。

FJ 注意到他的所有奶牛的总重量不小于 W W W,所以他能够派出符合规则(一)的队伍。帮助他确定这样的队伍中能够达到的最佳的才艺与重量的比值。

输入格式

第一行是两个整数,分别表示牛的个数 n n n 和总重量限制 W W W

2 2 2 ( n + 1 ) (n+1) (n+1) 行,每行两个整数,第 ( i + 1 ) (i + 1) (i+1) 行的整数表示第 i i i 头奶牛的重量 w i w_i wi 和才艺水平 t i t_i ti

输出格式

请求出 Farmer 用一组总重量最少为 W W W 的奶牛最大可能达到的总才艺值与总重量的比值。

如果你的答案是 A A A,输出 1000 A 1000A 1000A 向下取整的值,以使得输出是整数(当问题中的数不是一个整数的时候,向下取整操作在向下舍入到整数的时候去除所有小数部分)。

样例 #1

样例输入 #1

3 15
20 21
10 11
30 31

样例输出 #1

1066

提示

样例解释

在这个例子中,总体来看最佳的才艺与重量的比值应该是仅用一头才艺值为 11 11 11、重量为 10 10 10 的奶牛,但是由于我们需要至少 15 15 15 单位的重量,最优解最终为使用这头奶牛加上才艺值为 21 21 21、重量为 20 20 20 的奶牛。这样的话才艺与重量的比值为 11 + 21 10 + 20 = 32 30 = 1.0666 … \frac{11+21}{10+20}=\frac{32}{30} = 1.0666\dots 10+2011+21=3032=1.0666,乘以1000向下取整之后得到 1066 1066 1066

数据规模与约定

对于全部的测试点,保证 1 ≤ n ≤ 250 1 \leq n \leq 250 1n250 1 ≤ W ≤ 1000 1 \leq W \leq 1000 1W1000 1 ≤ w i ≤ 1 0 6 1 \leq w_i \leq 10^6 1wi106 1 ≤ t i ≤ 1 0 3 1 \leq t_i \leq 10^3 1ti103

思路

正解是01分数规划 + 背包

1、分数规划

二分答案
∑ t i w i ≥ m i d \sum \frac{t_i}{w_i} \geq mid witimid

∑ ( t i − m i d ∗ w i ) ≥ 0 \sum(t_i - mid * w_i) \geq 0 (timidwi)0
所以
p i = t i − m i d ∗ w i p_i = t_i - mid * w_i pi=timidwi

2、背包

设 dp[i] 表示重量为 i i i 时可以取到 p p p 最大的值。

大于等于 W W W 的都存在 d p [ W ] dp[W] dp[W] 上,这个就是答案。

那么
d p [ j + w [ i ] ] = m a x ( d p [ j + w [ i ] ] , d p [ j ] + c [ i ] ) dp[j + w[i]] = max (dp[j + w[i]] , dp[j] + c[i]) dp[j+w[i]]=max(dp[j+w[i]],dp[j]+c[i])

code

#include <bits/stdc++.h>
#define fu(x , y , z) for(int x = y ; x <= z ; x ++)
#define fd(x , y , z) for(int x = y ; x >= z ; x --)
#define LL long long
using namespace std;
const int N = 255 , M = 1005;
const double eps = 1e-6;
const int inf = 1e8 + 5;
int n , W;
double p[N] , dp[M];
LL w[N] , t[N] , st;
double ck () {fu (i , 1 , W) dp[i] = -inf;fu (i , 1 , n) {fd (j , W , 0) {if (j + w[i] >= W) dp[W] = max (dp[W] , dp[j] + p[i]);else dp[j + w[i]] = max (dp[j + w[i]] , dp[j] + p[i]); }}return dp[W];
}
double fans () {double l = 0 , r = st , mid;while (r - l > eps) {mid = (l + r) / 2;fu (i , 1 , n) p[i] = t[i] - w[i] * mid;if (ck () >= eps) l = mid + eps;else r = mid;}return l;
}
int main () {scanf ("%d%d" , &n , &W);fu (i , 1 , n)scanf ("%lld%lld" , &w[i] , &t[i]) , st += t[i];printf ("%lld" , (LL)(fans () * 1000));return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/37070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

onlyoffice

一、功能描述 技术实现 选型&#xff1a;minio 文件存储服务器 onlyoffice 文档编辑器 选项特征&#xff1a;免费&#xff0c;支持私有化部署&#xff0c;不依赖第三方网络接口 Podman是RedHat开发的一个用户友好的容器调度器&#xff0c;是一种开源的Linux原生工具&#x…

「网络」网络安全必须知道的19个知识分享

一、防火墙&#xff08;Firewall&#xff09; 定义&#xff1a;都知道防火墙是干什么用的&#xff0c;但我觉得需要特别提醒一下&#xff0c;防火墙抵御的是外部的攻击&#xff0c;并不能对内部的病毒 ( 如ARP病毒 ) 或攻击没什么太大作用。 功能 : 防火墙的功能主要是两个网…

Vue2-收集表单数据、过滤器、内置指令与自定义指令、Vue生命周期

&#x1f954;&#xff1a;我徒越万重山 千帆过 万木自逢春 更多Vue知识请点击——Vue.js VUE2-Day4 收集表单数据1、不同标签的value属性2、v-model的三个修饰符 过滤器内置指令与自定义指令1、内置指令2、自定义指令定义语法&#xff08;1&#xff09;函数式&#xff08;2&am…

文献综述|NLP领域后门攻击、检测与防御

前言&#xff1a;在信息安全中后门攻击&#xff08;Backdoor Attack&#xff09;是指绕过安全控制而获取对程序或系统访问权的方法。而随着深度学习以及各种神经网络模型的广泛应用&#xff0c;神经网络中存在的后门问题也引起了研究人员的广泛关注。神经网络后门攻击就是使网络…

Android AOSP源码编译——AOSP整编(二)

切换到源码目录下执行下面命令 1、初始化环境 . build/envsetup.sh //清除缓存 make clobber2、选择编译目标 lunchAOSP 预制了很多 Product。这里为了简单我们先不用真机&#xff0c;而是选择模拟器的方式&#xff0c;对于 x86_64 模拟器&#xff0c;我们选择的是 aosp_x86…

redisson配置类---SpringBoot集成、redis单机和集群模式配置

1项目配置文件&#xff1a; 1.1&#xff1a;pom.xml <dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.17.7</version></dependency> 1.2 application.yml配置…

深度学习笔记(kaggle课程《Intro to Deep Learning》)

一、什么是深度学习&#xff1f; 深度学习是一种机器学习方法&#xff0c;通过构建和训练深层神经网络来处理和理解数据。它模仿人脑神经系统的工作方式&#xff0c;通过多层次的神经网络结构来学习和提取数据的特征。深度学习在图像识别、语音识别、自然语言处理等领域取得了…

Opencv将数据保存到xml、yaml / 从xml、yaml读取数据

Opencv将数据保存到xml、yaml / 从xml、yaml读取数据 Opencv提供了读写xml、yaml的类实现&#xff1a; 本文重点参考&#xff1a;https://blog.csdn.net/cd_yourheart/article/details/122705776?spm1001.2014.3001.5506&#xff0c;并将给出文件读写的具体使用实例。 1. 官…

C++多线程场景中的变量提前释放导致栈内存异常

多线程场景中的栈内存异常 在子线程中尝试使用当前函数的资源&#xff0c;是非常危险的&#xff0c;但是C支持这么做。因此C这么做可能会造成栈内存异常。 正常代码 #include <iostream> #include <thread> #include <windows.h>// 线程函数&#xff0c;用…

Fast-Newman算法和louvain算法

fast-newman算法 fast-newman算法是一种用于社区发现的算法。它是基于newman算法的改进版本&#xff0c;旨在提高算法的运行速度和效率。fast-newman算法通过将网络划分为多个子图&#xff0c;并在每个子图上进行社区划分&#xff0c;然后再将子图合并&#xff0c;最终得到整个…

【分布式存储】数据存储和检索~LSM

在数据库领域&#xff0c;B树拥有无可撼动的地位&#xff0c;但是B树的缺点就是在写多读少的场景下&#xff0c;需要进行大量随机的磁盘IO读写&#xff0c;而这个性能是最差的。并且在删除和添加数据的时候&#xff0c;会造成整个树进行递归的合并、分裂&#xff0c;数据在磁盘…

【JVM】类装载的执行过程

文章目录 类装载的执行过程1.加载2.验证3.准备4.解析5.初始化6.使用7.卸载 类装载的执行过程 类装载总共分为7个过程&#xff0c;分别是 加载&#xff0c;验证&#xff0c;准备、解析、初始化、使用、卸载 1.加载 将类的字节码文件加载到内存(元空间&#xff09;中。这一步会…

16.3.1 【Linux】程序的观察

既然程序这么重要&#xff0c;那么我们如何查阅系统上面正在运行当中的程序呢&#xff1f;利用静态的 ps 或者是动态的 top&#xff0c;还能以 pstree 来查阅程序树之间的关系。 ps &#xff1a;将某个时间点的程序运行情况撷取下来 仅观察自己的 bash 相关程序&#xff1a; p…

Keburnetes 存储卷 volumes

K8S 的 存储卷 volumes emptyDir 可实现Pod中的容器之间共享目录数据&#xff0c;但emptyDir存储卷没有持久化数据的能力&#xff0c;存储卷会随着Pod生命周期结束而一起删除 &#xff08;一个pod中创建了docker1 docker2两个容器&#xff0c;他们都挂载这个emptyDir&#xff0…

Gradle依赖管理:编译时和运行时依赖的区别

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

【LeetCode】《LeetCode 101》第十一章:妙用数据结构

文章目录 11.1 C STL11.2 数组448. 找到所有数组中消失的数字&#xff08;简单&#xff09;48. 旋转图像&#xff08;中等&#xff09;74. 搜索二维矩阵&#xff08;中等&#xff09;240. 搜索二维矩阵 II&#xff08;中等&#xff09;769. 最多能完成排序的块&#xff08;中等…

java重写与重载的区别

在Java中&#xff0c;重写&#xff08;Override&#xff09;和重载&#xff08;Overload&#xff09;是两种不同的概念&#xff1a; 重写&#xff08;Override&#xff09;&#xff1a; 重写是指子类重新定义&#xff08;覆盖&#xff09;了从父类继承而来的方法。重写要求子类…

ROSpider机器人评测报告

ROSpider机器人评测报告 最近入手了一款ROSpider六足仿生机器人&#xff0c;ROSpider是一款基于ROS 操作系统开发的智能视觉六足机器人。 外观 外观上ROSpider六足机器人如同名字一样有六只机械腿&#xff0c;整体来看像一只六腿的蜘蛛。腿上的关节处用了明亮的橙黄色很是显…

Redis实现消息的发布和订阅

Redis实现消息的发布和订阅 1、在springboot项目的pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schem…

cookie和session的区别,分布式环境怎么保存用户状态

1、cookie数据存放在客户的浏览器上&#xff0c;session数据放在服务器上。 2、cookie不是很安全&#xff0c;别人可以分析存放在本地的COOKIE并进行COOKIE欺骗&#xff0c;考虑到安全应当使用session。 3、session会在一定时间内保存在服务器上。当访问增多&#xff0c;会比…