首页 > 其他分享 >题解 [ARC121D] 1 or 2

题解 [ARC121D] 1 or 2

时间:2022-12-04 19:45:34浏览次数:45  
标签:ARC121D 删除 题解 ll inf rep lld

诈骗题,竟然评到了 \(2784\) 的惊人高分(快到红了),来补个题解。

题意:有两个可重集 \(A,B\),\(B\) 初始为 \(\varnothing\)。每次从 \(A\) 中删除一个或两个数,并将它们的和加入 \(B\) 中,重复操作直到 \(A=\varnothing\)。最小化 \(B\) 的极差。

\(1\le |A|\le 5\times 10^3\)。

如果每次必须删除两个数,显然最小与最大、次小与次大配对是最优的,可以用交换法证明。观察到删除一个数的操作等价于删除 \(0\) 和那个数。因此枚举有多少次删除一个数的操作,补充那么多个 \(0\) 之后跑刚刚的贪心即可。

容易做到 \(\Theta(n^2)\),但我懒得做到,所以写了一个 \(\Theta(n^2\log n)\)。

//By: OIer rui_er
#include <bits/stdc++.h>
#define rep(x,y,z) for(ll x=(y);x<=(z);x++)
#define per(x,y,z) for(ll x=(y);x>=(z);x--)
#define debug(format...) fprintf(stderr, format)
#define fileIO(s) do{freopen(s".in","r",stdin);freopen(s".out","w",stdout);}while(false)
using namespace std;
typedef long long ll;
const ll N = 1e4+5, inf = 0x3f3f3f3f3f3f3f3fll;

ll n, a[N], b[N], ans = inf;
template<typename T> void chkmin(T& x, T y) {if(x > y) x = y;}
template<typename T> void chkmax(T& x, T y) {if(x < y) x = y;}

int main() {
	scanf("%lld", &n);
	rep(i, 1, n) scanf("%lld", &a[i]);
	rep(i, 0, n) {
		ll L = 1, R = n + i;
		if((R - L + 1) & 1) continue;
		rep(j, 1, n) b[j] = a[j];
		rep(j, n+1, n+i) b[j] = 0;
		sort(b+1, b+1+n+i);
		ll mn = inf, mx = -inf;
		while(L < R) {
			chkmin(mn, b[L] + b[R]);
			chkmax(mx, b[L] + b[R]);
			++L; --R;
		}
		chkmin(ans, mx - mn);
	}
	printf("%lld\n", ans);
	return 0;
}

标签:ARC121D,删除,题解,ll,inf,rep,lld
From: https://www.cnblogs.com/ruierqwq/p/arc121d.html

相关文章

  • 无知时诋毁原神——题解
    P8880无知时诋毁原神题意简述:给定一个\(0\simn-1\)的排列\(c\)。构造两个同样为\(0\simn-1\)的排列的\(a,b\),满足\(\foralli\in[1,n],c_i=(a_i+b_i)\bmodn\)。如......
  • sql题解--打折日期交叉问题
    题目-打折日期交叉问题现有各品牌优惠周期表(promotion_info)如下,其记录了每个品牌的每个优惠活动的周期,其中同一品牌的不同优惠活动的周期可能会有交叉。promotion_id......
  • win11系统vmware虚拟机报错“不支持嵌套虚拟化”问题解决方案汇总
    一、报错内容vmware0虚拟机中开启虚拟化主机时,报错“Error:Failureinvalidatingvirtualizationcapabilities”[root@localhost~]#rht-vmctlfullresetclassroom......
  • NOIP2022 T1 种花 题解
    Part1吐槽&退役寄考场上唯一AC的题目,T3看错题以为可以删去不止1条边,T4输出没换行,寄。最后喜提100+0+0+0,给我的OI生涯画上了一个不完美的句号。Part2题解题目让统计......
  • CF1709 题解
    比赛链接:https://codeforces.com/contest/1709题解:AB水题//bySkyRainWind#include<cstdio>#include<vector>#include<cassert>#include<cstring>#include<......
  • AtCoder Beginner Contest 280 题解
    A-PawnonaGrid看样例猜题意(要求的是#的数量,直接判断。//If,oneday,Ifinallymanagetomakemydreamsareality...//Iwonder,willyoustillbethere......
  • YACS 2022年11月月赛 乙组 T3 菜单设计 题解
    题目链接上完编程课回来的深夜,更一篇吧。这一题一看数据范围$:18$,阶乘暴力打不了,就是状压。其实我还是比较喜欢状压的,不过这几个月怎么这么多状压?首先:设计状态不难发......
  • 树上染色-题解(贪心+DP+二分)
    树的上色题意简述树上有两个黑点,在每个单位时间内,每个黑点可以把自己相邻的一个白点变为黑色,求把整棵树所有点变为黑色的最短时间。\(n\)个点,两个黑点分别为\(x,y\)。......
  • 2022合肥学院acm程序设计大赛-热身赛题解 (1)
    A.codeforces直接读入输入即可#include<bits/stdc++.h>intmain(){strings;cin>>s;cout<<"https://codeforces.com/profile/"<<s;return0;}......
  • 合肥学院校赛热身赛题解
    A.codeforces直接读入输入即可#include<bits/stdc++.h>intmain(){strings;cin>>s;cout<<"https://codeforces.com/profile/"<<s;return0;}......