Codeforces Round #831 (Div. 1 + Div. 2) Problem C

题目链接

题意:给定编号为111 to nnn的nnn个砖块,第iii个砖块有重量wiw _iwi​。 PakPakPak有三个口袋,他需要将所有砖放入三个口袋中。保证每个口袋都有至少一块砖。BuDBuDBuD从每个口袋中拿出一块砖。从三个口袋拿出砖块的重量分别为w1、w2、w3w_1、w_2、w_3w1​、w2​、w3​,PakPakPak获得的分数为∣w1−w2∣+∣w2−w3∣|w_1 - w_2| + |w_2 - w_3|∣w1​−w2​∣+∣w2​−w3​∣,∣x∣|x|∣x∣表示xxx的绝对值。已知BudBudBud的取砖方法会让PakPakPak获得的分数尽量小,问PakPakPak怎样向口袋中放砖使得他自己获得的分数最大。输出这个最大值。

思路:贪心。将www数组从小到大排序后,我们发现最优解会有两种情况

  1. 将质量最大的砖放入第一个或最后一个口袋,其余数组分成两段,第一段的最大值为wiw_iwi​,第二段的最小值为wi+1w_{i+1}wi+1​。由于BudBudBud取砖时会使得w1w_1w1​ 与 w2w_2w2​、w2w_2w2​与w3w_3w3​的差值尽量小,因此放砖情况为第一(或三)口袋:wi+1w_{i+1}wi+1​到wn−1w_{n-1}wn−1​,第二口袋为w1到wiw_1到w_iw1​到wi​,第三(或一)口袋为wnw_nwn​。取砖情况为:中间口袋取wiw_iwi​,两边口袋取wi+1w_{i+1}wi+1​与wnw_nwn​。所以第一种情况的得分为wn−wi+wi+1−wiw_n - w_i + w_{i+1} - w_iwn​−wi​+wi+1​−wi​。
  2. 将质量最小的砖放入第一个或最后一个口袋。放砖情况为:第二口袋wi+1到wnw_{i+1}到w_nwi+1​到wn​,剩下二口袋分别为w1w_1w1​和w2到wiw_2到w_iw2​到wi​。最后得分为wi+1−wi+wi+1−w1w_{i+1} - w_i + w_{i+1} - w_1wi+1​−wi​+wi+1​−w1​。

接下来我们只需枚举iii,求resresres的maxmaxmax值即可。

#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>using namespace std;
using LL = long long;int T, n;void solve()
{int n;cin >> n;vector<int> a(n);for(int i = 0; i < n; ++i) {cin >> a[i];}sort(a.begin(), a.begin() + n);int res = a[n - 1] - a[0];for(int i = 0; i < n - 1; ++i) {res = max({res, a[i + 1] + a[n - 1] - 2 * a[i], 2 * a[i + 1] - a[i] - a[0]});}cout << res << '\n';
}int main()
{#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);freopen("out.txt", "w", stdout);
#endifios::sync_with_stdio(false);cin.tie(0);cin >> T;while(T--) {solve();}return 0;
}

Codeforces Round #831 (Div. 1 + Div. 2) problem C相关推荐

  1. Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...

  2. Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...

  3. Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs

    传送门 文章目录 题意: 思路: 题意: 你有nnn个装备槽,每个槽里面有cic_ici​个力量加成,对于每个槽只能选一个力量加成,现在给你mmm个力量组合[b1,b2,...,bn][b_1,b_2 ...

  4. Educational Codeforces Round 72 (Rated for Div. 2) D. Coloring Edges dfs树/拓扑找环

    传送门 文章目录 题意: 思路: 题意: 给你一张图,你需要给这个图的边染色,保证如果有环那么这个环内边的颜色不全相同,输出染色方案和用的颜色个数. n,m≤5e3n,m\le5e3n,m≤5e3 思 ...

  5. Educational Codeforces Round 111 (Rated for Div. 2) D. Excellent Arrays 组合数学

    传送门 文章目录 题意: 思路: 题意: 给你一个数组aia_iai​,定义一个数组是好的当且仅当对于所有iii都有ai!=ia_i!=iai​!=i.定义f(a)f(a)f(a)表示数组aaa中i& ...

  6. Educational Codeforces Round 111 (Rated for Div. 2) E. Stringforces 二分 + 状压dp

    传送门 文章目录 题意: 思路: 题意: 给你一个串,只包含前kkk个字母和???,定义fif_ifi​表示第iii个字母在串中出现的最长连续长度,你现在需要将???替换为前kkk个字母,使得mini ...

  7. Educational Codeforces Round 75 (Rated for Div. 2) E2. Voting (Hard Version) 贪心

    传送门 文章目录 题意: 思路: 题意: n≤2e5,m≤n,p≤1e9n\le2e5,m\le n,p\le 1e9n≤2e5,m≤n,p≤1e9 思路: 首先需要发现一些性质,假设preipre_ ...

  8. Educational Codeforces Round 73 (Rated for Div. 2) F. Choose a Square 线段树 + 二维转一维

    传送门 文章目录 题意: 思路: 题意: 给你nnn个点(xi,yi)(x_i,y_i)(xi​,yi​),每个点有个价值cic_ici​,现在你可以框一个正方形,要求左下角和右上角的坐标(x,y)( ...

  9. Educational Codeforces Round 73 (Rated for Div. 2) E. Game With String 思维博弈 好题(2500)

    传送门 文章目录 题意: 思路: 题意: 思路: 我们将每一段...拿出来看成若干段,将其分成以下四种情况: (1)len<b(1)len<b(1)len<b (2)b≤len< ...

  10. Educational Codeforces Round 73 (Rated for Div. 2) Make The Fence Great Again dp + 结论

    传送门 文章目录 题意: 思路: 题意: 思路: 首先证明一个结论:一个数最多被加两次. 首先假设a[i]=a[i−1]a[i]=a[i-1]a[i]=a[i−1]或a[i]=a[i+1]a[i]=a ...

最新文章

  1. vue 去除路由时候的#
  2. matlab生产计划问题,用MATLAB解决综合生产计划编制过程中的优化问题
  3. 【转载】Ubuntu环境下配置Android Studio
  4. 处理百万级以上的数据提高查询速度的方法
  5. springboot-项目获取resources下文件的方法
  6. html新增伪类,css3新增伪类有哪些
  7. 外卖平台用户端APP说明
  8. (29)FPGA面试题时序电路延时
  9. python type
  10. Python中fastapi构建的web项目使用.gitlab-ci.yml文件在KubeSphere中进行自动部署
  11. [渝粤教育] 中国地质大学 高级会计学 复习题 (2)
  12. Tip:部署sharepoint2013SP1指定SQL数据库时的小细节
  13. 批量将WORD转换成PDF文件
  14. Laravel单元测试
  15. 握奇ukey没证书_握奇USB KEY
  16. 计算机硬盘应该什么格式化,电脑硬盘打不开提示要格式化怎么办
  17. DeviceDriver(十四):多点触摸(MT协议,Input子系统)
  18. [硬件]_ELVE_VS2015下opencv3.3的配置问题
  19. Unity 3d 中Debug.Log和Print的区别。
  20. 北大计算机所孙俊教授,教育部人工智能咨询专家孙俊:科技怎样赋能智慧教育?...

热门文章

  1. 自定义chrome新标签页
  2. Java中怎么打开jsp_jsp文件怎么打开 打开jsp文件的详细步骤【详细介绍】
  3. 云原生时代,Kubernetes 让应用落地的 N 种招式(附 PPT)
  4. Indilinx主控固态量产成功修复步骤
  5. 常用国际贸易术语汇总
  6. 2.智能快递柜(终端篇)
  7. ### LinuxCBT VBOX Edition ###
  8. 单电机板机模型,f22
  9. MT7620a-Openwrt-Frp
  10. 利用iframe覆盖windowed plugin