贪心:推公式

news/2025/2/21 6:59:43/

 耍杂技的牛:

 我们先分析每头牛的危险值 = 他前面牛的w(重量值)和 - 自身的s(强壮值),要使每头牛的危险值最小,这显然是与w 和 s同时相关,所以先想出一种做法按 每头牛的w + s进行升序排序(题见多了可能就会有这种题感)。接下来进行数学分析证明: 

i是从上往下数:

其他牛的危险值显然不变,所以分析交换前后这两头牛中最大的危险值即可。

由于s, w都是正数,wi−si+1>−si+1 , wi+1−si>−si

对于同一头牛i+1,比较wi−si+1, wi+1−si 即可

当wi−si+1>=wi+1−si,即 wi+si>=wi+1+si+1时, 交换后更优

当wi−si+1<wi+1−si,即 wi+si<wi+1+si+1时, 交换前更优

所以得到做法: 按每头牛的 w + s 进行排序, 当存在逆序时就进行交换(即升序排序),
然后根据题意算出每头牛的危险值记录其中的最大值即可

#include <iostream>
#include <algorithm>using namespace std;typedef pair<int,int>PII;//把w+s和w一组,用于后面排序,公式用的到w+sconst int N=50010;int n;
int w[N],s[N];//w是i的重量,s是i的强壮程度
PII cow[N];//每头牛的w+s和wint main()
{int n;scanf("%d",&n);for(int i = 0; i < n; i ++ ){int w,s;scanf("%d%d", &w, &s);cow[i]={w+s,w};}sort(cow,cow+n);//用w+s升序,可以计算最大危险值的最小可能值int res=-2e9,sum=0;//答案先赋负无穷,sum表示每头牛上面的重量之和for(int i = 0; i < n; i ++ )//计算最大危险值{int w=cow[i].second,s=cow[i].first-w;       res=max(res,sum-s);//sum-s计算危险系数sum+=w;//加上这头牛的重量}printf("%d\n",res);return 0;
}


http://www.ppmy.cn/news/1205794.html

相关文章

虚幻引擎:如何在工程里面添加插件

1.在自己的项目中安装插件 在content目录下创建一个Plugins的文件,将插件文件放进去即可 2.在软件上安装,这样所有创建的项目都会带有此插件 将插件放在自己软件的这个目录下就好了

【踩坑】Putty报错: Can’t agree a key change algorithm

原因可能是putty版本太老了&#xff0c;更新putty就好了 下载地址&#xff1a;https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 根据需要选择自己想要下载的版本&#xff0c;我是下载的如下图所示的版本。 另外&#xff0c;了解了一下Putty是用来远程连接…

Google Chrome 浏览器 119.0.6045.106 版本提示 STATUS_INVALID_IMAGE_HASH 崩溃

问题 今天更新 Google Chrome 浏览器到 119.0.6045.106 版本&#xff0c;然后访问页面不是空白&#xff0c;就是页面崩溃了 解决方案 我在网上找了几种&#xff0c;下面这个方式符合&#xff0c;能解决我的问题&#xff0c;就是在快捷方式的属性那里&#xff0c;找到目标给它…

对于MVVM的理解、使用、MVC与MVVM的区别、MVVM应用场景

前言 持续学习总结输出中&#xff0c;今天分享的是对于MVVM的理解、使用、MVC与MVVM的区别、MVVM应用场景 MVVM MVVM 是 Model-View-ViewModel 的缩写。MVVM 是一种设计思想。 Model 代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑。 View 代表UI组件&#xff0c…

Linux命令(116)之logger

linux命令之logger 1.logger介绍 linux命令logger是一个shell命令接口,通过该接口使用rsyslog的系统日志模块可以向系统日志文件(自定义日志文件)写入一行信息 2.logger用法 logger [参数] [message] logger参数 参数说明-i记录进程ID-t在日志中的每一行添加一个标签-p指定…

spring boot security 自定义AuthenticationProvider

spring boot security 自定义AuthenticationProvider 基于 spring boot 3.x 场景实现 手机验证码登陆 实现 CaptureCodeAuthenticationFilter public class CaptureCodeAuthenticationFilter extends AbstractAuthenticationProcessingFilter {private static final Strin…

带有滑动菜单指示器的纯 CSS 导航选项卡

效果展示 CSS 知识点 filter 属性回顾 transition 属性回顾 使用单选框实现导航菜单的思路 单选框当点击完成后就会有一个:checked属性&#xff0c;可以利用这个属性来实现导航菜单底部滑动块的滑动动画和当前菜单项激活状态的管理。 整体页面结构 <div class"tab…

odoo16前端框架源码阅读——ormService.js

odoo16前端框架源码阅读——ormService.js 路径&#xff1a;addons\web\static\src\core\orm_service.js 简单翻译一下代码中的注释&#xff1a; ORM服务是js代码和python的ORM层通信的标准方法。 然后讲了One2many and Many2many特使的指令格式&#xff0c;每个指令都是3元…