题目链接

题目大意

给你一个数组,要你使数组所有元素的值都相等且所消耗最小代价,增加1消耗a,减少1消耗r,转移1消耗m,求消耗最小代价

题目思路

如果增加减少都是1,转移是2,那么就是类似于仓库选址问题,直接找中位数,而这个不是,就是稍微改编了一下,三分一下就行了

代码

#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn=1e5+5;
int n,a,r,m,h[maxn];
ll check(int x){ll down=0,up=0,ans=0;for(int i=1;i<=n;i++){if(h[i]<x){up+=x-h[i];//增加}else{down+=h[i]-x;//减少}}if(down>up){ans+=(down-up)*r;}else{ans+=(up-down)*a;}ans+=m*min(down,up);return ans;
}
int main(){scanf("%d %d %d %d",&n,&a,&r,&m);for(int i=1;i<=n;i++){scanf("%d",&h[i]);}m=min(m,a+r);//预处理int l=0,r=1e9,ans;while(l<=r){int mid1=l+(r-l)/3,mid2=r-(r-l)/3;if(check(mid1)<=check(mid2)){ans=mid1;r=mid2-1;}else{l=mid1+1;}}printf("%lld\n",check(ans));return 0;
}

Codeforces Round #643 (Div. 2) E. Restorer Distance 题解(三分)相关推荐

  1. Codeforces Round #643 (Div. 2)B到C题解

    B. Young Explorers 题目大意:给你n个人,每个人都有不同的经验值,现在要将这些人分组,每个人可以加入该组的条件就是他的经验值小于等于他所在组的规模,要求组数最多,有的人可以不加组 解 ...

  2. Codeforces Round #643 (Div. 2) C. Count Triangles 题解(思维)

    题目链接 题目思路 显然是找x+y>z即可,其实只要枚举x+y即可,自己好菜qwq 代码 #include<cstdio> #include<algorithm> usi ...

  3. Codeforces Round #643 (Div. 2)(A, B, C, D, E)

    Codeforces Round #643 (Div. 2) Sequence with Digits 思路 一道暴力题,猜想在某一步一定会出现0,于是怀着忐忑提交了代码,结果还真的是这样. 代码 # ...

  4. Codeforces Round #807 (Div. 2)A~E个人题解

    Dashboard - Codeforces Round #807 (Div. 2) - Codeforces A. Mark the Photographer 题意: 有个人,每个人的身高设为,现在 ...

  5. 【Codeforces Round #514 (Div. 2) D. Nature Reserve】 三分+推公式

    题目链接 Codeforces Round #514 (Div. 2) D. Nature Reserve 题意 给你一些二维平面上的点,找一个与x轴相切的半径最小的圆包含所有点. 做法 首先如果两边 ...

  6. Codeforces Round #706 (Div. 2)-A. Split it!-题解

    目录 Codeforces Round #706 (Div. 2)-A. Split it! Problem Description Input Output Sample Input Sample ...

  7. Codeforces Round #742 (Div. 2) B、C 题解

    Codeforces Round 742 B. MEXor Mixup 题意 有一个数组,输入两个数a,b,a代表这个数组之外的最小非负整数,b代表这个数组的异或值,问你该数组的最小长度. 思路 首先 ...

  8. Codeforces Round #650 (Div. 3)(A-F1)题解

    A. Short Substrings 题解:按题意模拟即可 /*Keep on going Never give up*/ #pragma GCC optimize(3,"Ofast&qu ...

  9. Codeforces Round #643 (Div. 2)题解

    A . SequencewithDigitsSequence\ with\ DigitsSequence with Digits 首先数据范围就离谱,所以不管什么算法都不行,肯定是要找规律优化的. 我 ...

最新文章

  1. MySQL数据类型以及元数据的使用
  2. 负载均衡(SLB)使用最佳实践
  3. [再寄小读者之数学篇](2014-11-19 等差数列的部分和)
  4. python 测试用例怎么输入两个_python selenium多个测试用例
  5. 【组合数学】第一类,第二类斯特林数(Stirling),Bell数
  6. Geek的入门神器:micropython-能跑python的stm32开发板
  7. java制作安卓客户端,java做服务器,android干客户端,实现数据传输
  8. mysql set names没反应_MYSQL使用的时候遇到的一些问题
  9. java接口_Java接口
  10. CodeForces - 869A The Artful Expedient
  11. uat测试和sit测试_测试三角形,金字塔和圆形以及UAT
  12. 嵌入式软件工程师面试遇到的经典题目
  13. linux 软连接和硬链接的区别
  14. random是python的第三方库吗_random库是Python的()
  15. Ubuntu安装vim
  16. 网络安全----数据库1
  17. Add User for Power Apps 给PowerApps 添加账号
  18. 【Spring】(1)Spring概述:什么是Spring框架?为什么要用Spring框架?
  19. 好用的日历插件(三款常用的日历插件)
  20. 实现一个简单的 vue-router

热门文章

  1. ref改变样式 vue_vue.js对样式的具体操作详解
  2. 使用Clang作为编译器 —— Clang 中的Diagnostic flags
  3. 厦门大学,华中科技大学 再次牵手华为
  4. 狐友老欧头疼了一天,VFP转换成JSON格式总不对,竟是乱码惹的祸
  5. 关于Ultraiso无法写入硬盘映像的相关解决办法
  6. 移动开发唱衰,iOS开发者如何涅槃重生?
  7. 74LSxx versus. 74HCxx
  8. 二叉树、B树(B-树)、B+树、B*树详解,以及为什么MySQL选择B+树做索引
  9. 计算机辅助教育课件有哪些类型,多媒体计算机辅助教学 (2).ppt
  10. OOP Class具体解释