当前位置: 首页 > 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.yayakq.cn/news/876191/

相关文章:

  • dota2海涛做的网站建设网站应该加什么服务
  • 可以直接进入的舆情网站做网站能改吗
  • 标准网站建设公司wordpress 插件 语言包
  • 茶叶网站实际案例关键词优化的内容
  • 秦皇岛做网站的公司哪家好网站建设入门基础
  • 大网站制作公司哈尔滨网站建设公司哪家好
  • 网站速度查询建站技术入门
  • 加拿大28网站开发网页制作培训上海
  • 专门帮人做网站的公司如何做公司网站运营
  • 安康市城乡建设规划局网站php网站后台开发
  • 网上商城建站工作室网站服务器安全部署
  • 网站建设动态静态如何来做网站
  • 深圳宝安区住房和建设局网站静态网页设计教程
  • 有哪些做调查问卷赚钱的网站外贸如何网络推广
  • 预付网站制作费怎么做凭证长沙seo优化推广
  • paypal网站集成淘宝客怎么样做网站
  • 网站文章内链网站建设这门课
  • 做网站选云服务器内核品牌vi设计模板
  • 扶贫办网站建设网站建设精品课程
  • 如何查看用wordpress建的站点网站开发安全问题
  • 服务器网站部署端口配置优质网站建设公司哪家好
  • 网站如何做微信支付宝支付宝支付接口张家界seo推广
  • 网站怎么做熊掌号网站中的横幅怎么做
  • 用dw制作网站建设二级网站建设方案 试行
  • 室内设计和装修设计网站seo排名优化价格
  • seo网站关键词优化机构wix网站做图片能折叠吗
  • gwt 网站开发有哪些可以做课件赚钱的网站
  • 潍坊哪家网站制作公司好营销技巧电影
  • 网站建设手机foxpay wordpress
  • 做网站建设需要建设企业网站有什么好处