对于大小为1的集合,我们可以在其中加入0

因此,枚举0的个数,那么问题即可以看作要求每一个集合大小为2

(特别的,我们允许存在$\{0,0\}$,因为这样删除这两个0显然只会减小极差)

显然此时贪心将最小与最大、次小与次大……放入一个集合中即可

关于正确性,设最小值和最大值为$A,D$,若$\{A,D\}$则继续归纳即可,否则若$\{A,B\}$和$\{C,D\}$,那么有
$$
\begin{cases}\min(A+D,B+C)\ge \min(A+B,C+D)\\\max(A+D,B+C)\le \max(A+B,C+D)\end{cases}
$$
(关于这两个式子,左边的每一项都存在右边的一项小于等于或大于等于其)

因此不妨改为$\{A,D\}$和$\{B,C\}$,显然只会减小极差

具体实现可以先排序,再按照正负分开并加入0即可

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 5005
4 vector<int>vn,vp;
5 int n,mx,mn,ans,a[N];
6 void add(int x){
7 mx=max(mx,x);
8 mn=min(mn,x);
9 }
10 int main(){
11 scanf("%d",&n);
12 for(int i=1;i<=n;i++)scanf("%d",&a[i]);
13 sort(a+1,a+n+1);
14 for(int i=1;i<=n;i++)
15 if (a[i]<=0)vn.push_back(a[i]);
16 for(int i=n;i;i--)
17 if (a[i]>0)vp.push_back(a[i]);
18 if (n&1)vn.push_back(0);
19 ans=2e9;
20 for(int i=(n&1);i<=n;i+=2,vn.push_back(0),vn.push_back(0)){
21 mx=-2e9,mn=2e9;
22 if (vn.size()<vp.size()){
23 for(int j=0;j<vn.size();j++)add(vn[j]+vp[j]);
24 for(int j=0;j<(vp.size()-vn.size())/2;j++)add(vp[vn.size()+j]+vp[vp.size()-j-1]);
25 }
26 else{
27 for(int j=0;j<vp.size();j++)add(vn[j]+vp[j]);
28 for(int j=0;j<(vn.size()-vp.size())/2;j++)add(vn[vp.size()+j]+vn[vn.size()-j-1]);
29 }
30 ans=min(ans,mx-mn);
31 }
32 printf("%d",ans);
33 }

[atARC121D]1 or 2的更多相关文章

随机推荐

  1. nginx访问权限问题

    1.问题 server { listen 8011; server_name test.cn; location ~ \.php?.*$ { root /home/zhj/; #fastcgi_pas ...

  2. Editing Tools(编辑工具)

    编辑工具 # Process: 修剪线 arcpy.TrimLine_edit("", "", "DELETE_SHORT") # Proc ...

  3. 题解 [HAOI2016]字符合并

    题目传送门 Description 有一个长度为 \(n\) 的 \(01\) 串,你可以每次将相邻的 k 个字符合并,得到一个新的字符并获得一定分数. 得到的新字符和分数由这 k 个字符确定.你需要 ...

  4. 洛谷4895 独钓寒江雪 (树哈希+dp+组合)

    qwq 首先,如果是没有要求本质不同的话,那么还是比较简单的一个树形dp 我们令\(dp[i][0/1]\)表示是否\(i\)的子树,是否选\(i\)这个点的方案数. 一个比较显然的想法. \(dp[ ...

  5. Mysql双主双从高可用集群的搭建且与MyCat进行整合

    1.概述 老话说的好:瞻前顾后.患得患失只会让我们失败,下定决心,干就完了. 言归正传,之前我们聊了Mysql的一主一从读写分离集群的搭建,虽然一主一从或一主多从集群解决了并发读的问题,但由于主节点只 ...

  6. Python 做简单的登录系统

    案例 之 登录系统原创作品1 该随笔 仅插入部分代码:全部py文件源代码请从百度网盘自行下载! 链接:https://pan.baidu.com/s/1_sTcDvs5XEGDcnpoQEIrMg 提 ...

  7. 6月4日 Scrum Meeting

    日期:2021年6月4日 会议主要内容概述:讨论账单功能模块,讨论账单前后端接口. 一.进度情况 组员 负责 两日内已完成的工作 后两日计划完成的工作 工作中遇到的困难 徐宇龙 后端 账单数据界面 设 ...

  8. [技术博客]WEB实现划词右键操作

    [技术博客]WEB实现划词右键操作 一.功能解释 简单地对题目中描述的功能进行解释:在浏览器中,通过拖动鼠标选中一个词(或一段文字),右键弹出菜单,且菜单为自定义菜单,而非浏览器本身的菜单.类似的功能 ...

  9. 多边形——————区间dp

    原题链接:https://www.acwing.com/problem/content/285/ 题意简单来说就是:给你一个环,断掉一条边使其成为一个链,用这个链跑dp,求最大得分. 首先这不是一道板 ...

  10. Machine learning (7-Regularization)

    1.The Problem of Over-fitting 2.Cost Function 3.Regularized Linear Regression 4.Regularized Logistic ...