分段枚举。

AC代码:

const int N = 2e5 + 50;
ll n, m, a, r;
ll h[N], sum[N], suf[N];int main()
{cin >> n >> a >> r >> m;rep(i, 1, n)sld(h[i]);sort(h + 1, h + 1 + n);sum[0] = 0;rep(i, 1, n)sum[i] = sum[i - 1] + h[i];//前缀和suf[n + 1] = 0;per(i, n, 1)suf[i] = suf[i + 1] + h[i];//后缀和ll ans = INF;h[n + 1] = h[n];rep(i, 1, n){ll p = i, s = n - i, tar;if (p * a <= s * r)tar = h[i + 1];elsetar = h[i];ll add = p * tar - sum[i], remove = suf[i + 1] - s * tar;ll res = 0;if (a + r >= m){ll tmp = min(add, remove);res += tmp * m, add -= tmp, remove -= tmp;}res += a * add + r * remove;ans = min(ans, res);}ll ave = sum[n] / n;rep(i, max(0ll, ave - 2), ave + 2){ll add = 0, remove = 0;rep(j, 1, n){if (h[j] < i)add += (i - h[j]);else if (h[j] > i)remove += (h[j] - i);}ll res = 0;if (a + r >= m){ll tmp = min(add, remove);res += tmp * m, add -= tmp, remove -= tmp;}res += a * add + r * remove;ans = min(ans, res);}ans = min(ans, r * sum[n]);pld(ans);return 0;
}

Codeforces 1355 E. Restorer Distance相关推荐

  1. CodeForces - 1355E Restorer Distance(三分)

    题目链接:点击查看 题目大意:给出一个长度为 n 的数组 a ,现在可以对数组 a 进行数次操作: 将任意一个位置增加 1 ,代价为 A 将任意一个位置减少 1 ,代价为 R 将任意一个位置增加 1 ...

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

    题目链接 题目大意 给你一个数组,要你使数组所有元素的值都相等且所消耗最小代价,增加1消耗a,减少1消耗r,转移1消耗m,求消耗最小代价 题目思路 如果增加减少都是1,转移是2,那么就是类似于仓库选址 ...

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

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

  4. CF刷题(03)——难度2100~2400

    这个博客记录2100到2400共17个题 2100 1.B. Maximum Value 题意:You are given a sequence a consisting of nnn integer ...

  5. CodeForces - 1612A Distance

    A. Distance time limit per test3 seconds memory limit per test512 megabytes Let's denote the Manhatt ...

  6. C - Social Distance CodeForces - 1367C

    C - Social Distance CodeForces - 1367C 题目大意 有t组测试案例 ,输入n和k,n是桌子的数量,k是餐厅规定的每两个人之间的桌子数量,以字符串为例,n=8,k=2 ...

  7. Codeforces Contest 1081 problem D Maximum Distance —— 并查集

    Chouti was tired of the tedious homework, so he opened up an old programming problem he created year ...

  8. CodeForces 1396E Distance Matching(构造+树的重心+dfs+set)

    problem 洛谷链接 solution 这种要求值和恰好为 kkk 的题目,一般要先明确值和的取值范围. 所以我们先来确定一下值和的最小值和最大值. 将一条路径拆成若干条边,单独计算每条边对路径的 ...

  9. 【CodeForces - 628C】Bear and String Distance(贪心,构造)

    Description  定义两个小写字母之间的距离为这两个字母在字母表中的距离,如dis(a,z)=25,dis(a,c)=2,两个长度相同串的距离为这两个串对应位置字母距离之和.现给出一个长度为n ...

最新文章

  1. git撤销某文件被添加到暂存区的修改,且回到文件未修改前的原样
  2. Linux学习笔记(二)|常用命令
  3. 移动端HTML响应式布局之神奇的pt(自测99.99%与设计图一致)
  4. 从StreamCorruptedException解析值:无效的流头消息
  5. 前端学习(3301):类组件的ref
  6. 常用并发工具类(锁和线程间通信工具类)
  7. 使用规则_英文标点符号的使用规则
  8. 华为鸿蒙系统电脑有那些,华为鸿蒙系统上线,仅2家国产品牌支持,爆冷?
  9. 51单片机蜂鸣器实现歌曲《起风了》代码
  10. ApiPost测试接口直接生成API文档
  11. 关于网站速度优化的一点建议
  12. 物联网控制APP入门专题(一)---做物联网APP的几个模式简介
  13. Generative Image Inpainting with Contextual Attention
  14. matlab编程中abs是什么意思,在程序设计中,abs是什么函数?,程序中ABS代表什么意思?...
  15. php agrs zf2,添加ZF2_PATH environment variable 环境变量
  16. 算法的时间复杂度、渐进表达式、渐进性分析和渐进符号(O、Ω、θ、o、ω)
  17. 安卓下使用OpenCL进行PowerVR GPU编程
  18. 398高校毕业设计选题
  19. 强化学习入门项目spinning up(1)安装
  20. ajax异步请求刷新

热门文章

  1. linux怎么打开python_linux下启动python
  2. 隧道未来如何发展?路网全息感知,颠覆公路交通安全史
  3. android 开发配置阿里云maven仓库
  4. 杨辉三角c语言程序for循环,C语言循环结构 -C语言打印杨辉三角
  5. 基于PyQt5和Pywinauto自动化测试客户端
  6. 论倚天屠龙记中继承人问题
  7. Delaunay三角剖分算法初探
  8. C语言strlen函数求字符串长度及自己实现
  9. linux查看进程的cpu和内存利用率
  10. php 爬取一个人的网易云评论,网易云音乐评论爬取