当前位置: 首页 > news >正文

净水器东莞网站建设湖北搜索引擎优化

净水器东莞网站建设,湖北搜索引擎优化,南昌网站建设培训,开锁公司做网站题目大意: N 头牛 , 每头牛有一个重量(Weight)和一个力量(Strenth) , N头牛进行排列 , 第 i 头牛的风险值为其上所有牛总重减去自身力量 , 问如何排列可以使最大风险值最小 , 求出这个最小的最大风险值&am…

题目大意:

N 头牛 , 每头牛有一个重量(Weight)和一个力量(Strenth) , N头牛进行排列 , 第 i 头牛的风险值为其上所有牛总重减去自身力量 , 问如何排列可以使最大风险值最小 , 求出这个最小的最大风险值;

思路:临项交换

邻项交换排序是一种常见的贪心算法,通过比较两个相邻元素交换前后的优劣对整个序列进行排序,从而使得这个序列成为题目所求的最优解。

我们假设前 i 项已经是最优排列 , 且第 i + 1 项和第 i + 2 项当前排列时最优
在这里插入图片描述
那么对于第 i + 1 个
resi+1=sum−s2res_{i+1} = sum - s_2resi+1=sums2
对于第 i + 2 个
resi+2=sum+s1−w2res_{i+2} = sum + s_1 - w_2resi+2=sum+s1w2

若我们交换第 i + 1 项 和 第 i + 2 项
在这里插入图片描述

那么对于第 i + 1 个
resi+1′=sum−w2res_{i+1}'= sum - w_2resi+1=sumw2
对于第 i + 2 个
resi+2′=sum+w1−s2res_{i+2}' = sum + w_1 - s_2resi+2=sum+w1s2

在这里我们已经假设交换前为最优状态 , 所以我们根据题目中最大值最小的定义可以得到下面这个式子
max(resi+1,resi+2)<=max(resi+1′,resi+2′)max(res_{i+1} , res_{i+2}) <= max(res_{i+1}' , res_{i+2}')max(resi+1,resi+2)<=max(resi+1,resi+2)
转化一下
max(sum−s2,sum+s1−w2)<=max(sum−w2,sum+w1−s2)max(sum - s_2 , sum + s_1 - w_2) <= max(sum - w_2 , sum + w_1 - s_2)max(sums2,sum+s1w2)<=max(sumw2,sum+w1s2)
每一项 减去 sum 加上 (s2+w2s_2 + w_2s2+w2)
max(w2,s1+s2)<=max(s2,w1+w2)max(w_2 , s_1 + s_2) <= max(s_2 , w_1 + w_2)max(w2,s1+s2)<=max(s2,w1+w2)
至此 , 我们就推出了我们想要的交换方程

bool cmp(node a,node b){return max(a.x + a.y , b.y) < max(b.x + b.y , a.y) || (max(a.x + a.y , b.y) == max(b.x + b.y , a.y) && a.x + a.y < b.x + b.y); 
}

这里等于号要特判 ,不懂的可以看看下面这个博客
浅谈邻项交换排序的应用以及需要注意的问题

当我们排好序后 ,不要忘记我们的问题 , 是要求最小的最大值 ,这是只要遍历所有状态求出最大值即可。

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
typedef long long ll;
const int N = 2e5+10;
const int p = 1e9 + 7;
typedef pair<int,int>PII;
const int inf = 1 << 31 - 1;
const double eps = 1e-9;int n;struct node{int x,y;
}a[N];bool cmp(node a,node b){return max(a.x + a.y , b.y) < max(b.x + b.y , a.y) || (max(a.x + a.y , b.y) == max(b.x + b.y , a.y) && a.x + a.y < b.x + b.y); 
}int main(){IOScin >> n;for(int i=1;i<=n;i++){cin >> a[i].x >> a[i].y;}sort(a+1,a+1+n,cmp);int ans = -inf , sum = 0;for(int i=1;i<=n;i++){sum += a[i-1].x;ans = max(ans , sum - a[i].y);}cout << ans ;return 0;
}
//freopen("文件名.in","r",stdin);
//freopen("文件名.out","w",stdout);
http://www.hengruixuexiao.com/news/27684.html

相关文章:

  • 网站用什么平台开发今天的新闻 最新消息摘抄
  • 汤唯梁朝伟做的视频网站企业网站建设制作
  • 专门做机器人大战的网站叫什么营销网站建设培训学校
  • h5做网站用什么框架网络推广 网站制作
  • 沛县网站国内可访问的海外网站和应用
  • 做一个自己的免费网站吗百度投诉中心电话
  • 网站建设与实现 文献综述宁波网站seo公司
  • 国内做交互网站网站设计需要什么
  • 网站如何做提交的报名表公司网站推广方法
  • 手表网站 二手如何制作简易网站
  • 重庆市建设厅官塔吊证办理网站谷歌搜索引擎营销
  • 做网站彩票代理犯法吗怎么做外链
  • 响应式网站一般怎么设计seo引擎优化是什么
  • 中卫网站建设怎么可以让百度快速收录视频
  • 如果建立网站在线网站建设
  • 丰台网站建设二十条优化措施全文
  • 电子商务网站软件建设的核心是什么关键词排名查询工具有什么作用?
  • 卓越科技建站无锡做网站网页设计大作业
  • 网站建设 不违背推广拉新任务的平台
  • 哪些网站做魔兽地图爱战网关键词挖掘
  • 网页游戏直接玩aso优化排名违法吗
  • 哪个网站做农产品app拉新推广赚佣金
  • 手机app开发网站模板2021年新闻摘抄
  • 做网购网站天津seo博客
  • 网站制作滚动图片怎么做广告竞价
  • wordpress win2008网站seo站群软件
  • 深圳网站关键词排名查询网站排名优化推广
  • 能免费做网站吗中国做网站的公司排名
  • 精品网站制作公司百度投诉电话人工客服24小时
  • 去哪找网站建设公司百度直播间