Codeforces Round #831 (Div. 1 + Div. 2) problem C
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数组从小到大排序后,我们发现最优解会有两种情况
- 将质量最大的砖放入第一个或最后一个口袋,其余数组分成两段,第一段的最大值为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。
- 将质量最小的砖放入第一个或最后一个口袋。放砖情况为:第二口袋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相关推荐
- Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...
- Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...
- Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs
传送门 文章目录 题意: 思路: 题意: 你有nnn个装备槽,每个槽里面有cic_ici个力量加成,对于每个槽只能选一个力量加成,现在给你mmm个力量组合[b1,b2,...,bn][b_1,b_2 ...
- Educational Codeforces Round 72 (Rated for Div. 2) D. Coloring Edges dfs树/拓扑找环
传送门 文章目录 题意: 思路: 题意: 给你一张图,你需要给这个图的边染色,保证如果有环那么这个环内边的颜色不全相同,输出染色方案和用的颜色个数. n,m≤5e3n,m\le5e3n,m≤5e3 思 ...
- 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& ...
- Educational Codeforces Round 111 (Rated for Div. 2) E. Stringforces 二分 + 状压dp
传送门 文章目录 题意: 思路: 题意: 给你一个串,只包含前kkk个字母和???,定义fif_ifi表示第iii个字母在串中出现的最长连续长度,你现在需要将???替换为前kkk个字母,使得mini ...
- 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_ ...
- 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)( ...
- 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< ...
- 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 ...
最新文章
- vue 去除路由时候的#
- matlab生产计划问题,用MATLAB解决综合生产计划编制过程中的优化问题
- 【转载】Ubuntu环境下配置Android Studio
- 处理百万级以上的数据提高查询速度的方法
- springboot-项目获取resources下文件的方法
- html新增伪类,css3新增伪类有哪些
- 外卖平台用户端APP说明
- (29)FPGA面试题时序电路延时
- python type
- Python中fastapi构建的web项目使用.gitlab-ci.yml文件在KubeSphere中进行自动部署
- [渝粤教育] 中国地质大学 高级会计学 复习题 (2)
- Tip:部署sharepoint2013SP1指定SQL数据库时的小细节
- 批量将WORD转换成PDF文件
- Laravel单元测试
- 握奇ukey没证书_握奇USB KEY
- 计算机硬盘应该什么格式化,电脑硬盘打不开提示要格式化怎么办
- DeviceDriver(十四):多点触摸(MT协议,Input子系统)
- [硬件]_ELVE_VS2015下opencv3.3的配置问题
- Unity 3d 中Debug.Log和Print的区别。
- 北大计算机所孙俊教授,教育部人工智能咨询专家孙俊:科技怎样赋能智慧教育?...