题意

奶牛叠罗汉, 这 N 头奶牛中的每一头都有着自己的重量 Wi 以及自己的强壮程度Si

写一个程序确定奶牛排序, 要使得它们的风险值中的最大值尽可能小

第 i 头奶牛的危险系数 = 当前上面所有奶牛的危险系数之和 - 第i头奶牛的强壮值


结论:

将奶牛按照 wi+si 进行升序排序, 风险系数一定是最小的

举个例子:给定的  Wi Si 为:1 10 32 2  53 3  3 没有排序的情况:    Wi Si  危险系数1 10 3    -3   -> 0-32 2  5    5    -> 10-53 3  3    9*   -> 12-3所以该序列的最终危险系数为 9排序的情况:      Wi Si     危险系数1  3  3     -3  -> 0-3  2  2  5     -2  -> 3-53  10 3      2* -> 5-3所以该序列的最终危险系数为 2

所以, 从例子上就可以看出升序排序后所得的解是优于未排序的解的


证明:

我们可以先思考一下, 在排序前和排序后的关系? 如果把第 i 头牛和第 i+1 头牛交换, 会有什么样的影响?
我们要求的是让最大值尽可能最小, 也就要使得交换前大于交换后
序列: w₁s₁.., wᵢsᵢ, wᵢ₊₁sᵢ₊₁ ... wₙsₙ
第 i 头牛交换前的危险系数

第 i+1 头牛交换前的危险系数

第 i 头牛交换后的危险系数

第 i+1 头牛交换后的危险系数

因为每个式子前面的 sigma 的 1+...+i-1 是交集, 所以我们可以发现
"交换前后, 其他牛的危险值显然不变, 所以我们只要分析交换前后, 这两头牛的最大危险值即可"

化简后得到

第 i 头牛交换前

第 i+1 头牛交换前

第 i 头牛交换后

第 i+1 头牛交换后

将交换前后进行对比
ps: ∀wᵢ,sᵢ∈Z⁺因为题目的要求是最大值中风险值最小
即交换后的max(wᵢ₊₁-sᵢ, -sᵢ₊₁)(后)需要小于等于 交换前的max(−si, wᵢ-sᵢ₊₁)(前)第 i 头牛交换前后的对比: 前      后-sᵢ 和 wᵢ₊₁-sᵢ
两边同时加上一个sᵢ, 可以发现 wᵢ₊₁-sᵢ > -sᵢ第 i+1 头牛交换前后的对比: 前        后wᵢ-sᵢ₊₁ 和 -sᵢ₊₁
两边同时减去一个 sᵢ₊₁, 可以发现 wᵢ-sᵢ₊₁ > -sᵢ₊₁,即最大风险范围是 [wᵢ-sᵢ₊₁, wᵢ₊₁-sᵢ]
所以我们只要对比 wᵢ₊₁-sᵢ 和 wᵢ-sᵢ₊₁ 就行即可当 wᵢ-sᵢ₊₁ >= wᵢ₊₁-sᵢ 时, wᵢ+sᵢ >= wᵢ₊₁+sᵢ₊₁ 时, 交换后更优
当 wᵢ-sᵢ₊₁ < wᵢ₊₁-sᵢ 时, wᵢ+sᵢ < wᵢ₊₁+sᵢ₊₁ 时, 交换前更优所以们让按照 wᵢ+sᵢ 进行排序, 当存在逆序时就交换
然后更具题意算出每头牛的危险值记录其中最大值即可
先求出一个最大值, 因为要尽可能小, 所以交换后的最大值要小于交换前的最大值(题意), 然后就推出了最优的排序方案.
hh, 我是这么理解的
感觉有点像构造, 根据题意构造出来一个符合要条件的方案...比较菜, 如有错误希望大佬们可以指出
AC代码
#include <iostream>
#include <algorithm>#define fs first
#define sc second
using namespace std;const int MAXN = 50010;
typedef pair<int, int> pii;int n;
pii cow[MAXN];int main()
{cin >> n;for (int i = 0; i < n; ++ i){int w, s; cin >> w >> s;cow[i] = {w + s, w};        // 按照推出的结果排序}// 根据上文说法这样的排序是最优的sort(cow, cow + n);int res = -2e9, sum = 0;for (int i = 0; i < n; ++ i){int w = cow[i].sc, s = cow[i].fs - w;res = max(res, sum - s);   // 之前牛的总重量 - 当前牛的强壮值 = 危险系数 sum += w;   // wi-1 头牛的累加和}cout << res << endl;return 0;
}

AcWing 125. 耍杂技的牛相关推荐

  1. AcWing 125. 耍杂技的牛 (推公式)

    AcWing 125. 耍杂技的牛 农民约翰的N头奶牛(编号为1..N1..N1..N)计划逃跑并加入马戏团,为此它们决定练习表演杂技. 奶牛们不是非常有创意,只提出了一个杂技表演: 叠罗汉,表演时, ...

  2. ACWing算法基础课-耍杂技的牛

    1. 耍杂技的牛 题目链接: https://www.acwing.com/problem/content/description/127/ 参考文献 C++ 代码 #include <iost ...

  3. 每日四题打卡-4.15:耍杂技的牛/贪心绝对值不等式-货仓选址/贪心排序不等式-排队打水/huffman哈夫曼树-合并果子

    耍杂技的牛 具体:https://blog.csdn.net/qq_27262727/article/details/105515507 农民约翰的N头奶牛(编号为1..N)计划逃跑并加入马戏团,为此 ...

  4. 贪心——推公式——耍杂技的牛

    农民约翰的 N 头奶牛(编号为 1..N)计划逃跑并加入马戏团,为此它们决定练习表演杂技. 奶牛们不是非常有创意,只提出了一个杂技表演: 叠罗汉,表演时,奶牛们站在彼此的身上,形成一个高高的垂直堆叠. ...

  5. AcWing 188. 武士风度的牛(BFS,C++)

    AcWing 188. 武士风度的牛 题意 从一个起点遵循某种特殊规则走到终点,求最短的步数 分析 很显然,这题是bfs思想的应用. 1.首先输入数据,并在每次输入数据时判断起点和终点的坐标. 2.初 ...

  6. 算法提高课-图论-有向图的强连通分量-AcWing 1174. 受欢迎的牛:tarjan算法求强连通分量、tarjan算法板子、强连通图

    文章目录 题目解答 题目来源 题目解答 来源:acwing 分析: 强连通图:给定一张有向图.若对于图中任意两个结点x,y,既存在从x到y的路径,也存在从y到x的路径,则称该有向图是"强连通 ...

  7. MIT类人机器人开始耍杂技了,看这个后空翻它漂亮吗?

    来源:机器之心本文约1500字,建议阅读5分钟最近,各式机器人可以说是十分火热了,机器人选手也可以后空翻了. 最近,各式机器人可以说是十分火热了.今年,腾讯发布了多模态四足机器人 Max,继 Max ...

  8. 算法提高课-搜索-最短路模型-AcWing 1100. 抓住那头牛:bfs

    题目分析 来源:acwing 分析:bfs求最短步数,需要dist[]数组来记录最短步数. ac代码 #include<bits/stdc++.h> using namespace std ...

  9. 算法提高课-搜索-最短路模型-AcWing 188. 武士风度的牛 :bfs、dist数组记录最小步数

    题目分析 来源:acwing 分析:马走日,这里用bfs遍历马的行走过程,输出到达终点的最小步数. 使用bfs求到每个点的最小步数,需要开一个dist[][]数组,来记录起点到某点的最小步数. 队列里 ...

最新文章

  1. 监控组策略应用---组策略建模
  2. c++ argmax
  3. StringUtils详解
  4. OSGI动态加载删除Service bundle
  5. 顺序表基本操作函数总结
  6. NeurlPS 2021论文预讲会议题全公开,4大主题和25场报告等你来
  7. VTK:可视化之CurvatureBandsWithGlyphs
  8. 用html编写ASCII表,HTML ASCII
  9. 手把手教我班小姐姐学java之方法重写与方法重载
  10. 隐藏在计算机网卡怎样删除,卸载电脑中隐藏虚拟网卡设备的解决方法
  11. c#进阶一:使用ILDASM来查看c#中间语言
  12. 燃气行业引入电子签章推动燃气销售合同线上签署
  13. html实现pdf导出excel表格,纯前端文件导出-Excel/PDF
  14. 使用电位器控制LED灯的亮度
  15. 计算机未检测到任何网络硬件,电脑提示windows没有检测到任何网络硬件怎么办...
  16. 摄氏度符号英文计算机语言,英语符号
  17. Ntp校时客户端小工具
  18. 2020/10/22【ArcGIS】土地利用数据重分类与叠置分析-方法复盘
  19. 微信程序开发之微信接入(详细开发)
  20. 编程练习题 没答案版

热门文章

  1. 15个小时做10个可视化大屏,科技感爆棚,我把方法和工具教你
  2. linux压缩文件命令_linux常见的命令行和快捷键(带英文全称,便于记忆)
  3. mysql多字段设置为text问题
  4. 仙侠世界2不显示服务器,游戏相关问题_仙侠世界2常见问题及解决方法一览_3DM单机...
  5. Excel表格无法写入文字怎么解决
  6. 2008春节之疯狂旅程
  7. 通过网页直接打开QQ聊天窗口
  8. tp框架接入支付宝公钥证书支付+回调
  9. 如何在eclipse里配置Tomcat sever
  10. 金融危机下信用卡牛劲十足