简要题意

  • \(N\) 个盒子,每个盒子里有两个数。现在要把盒子中的数分成两种颜色,满足:

    1. 每个盒子中的数分别属于两种颜色,每个数恰好属于一种颜色
    1. 两种颜色的数的极差的乘积最小
  • 求这个最小值

  • \(N \le 200000\)

分析与解答

考虑极差的乘积的最小值,要么是让其中一个极小;要么是让两个都尽量小,感性理解即可

下文记 \(x_i\) 表示第 \(i\) 个盒子的较小值,\(y_i\) 表示第 \(i\) 个盒子的较大值。

分类讨论最大值和最小值是不是同色

1. 最大值和最小值不同色

这时让两个极差都尽量小

所以把所有 \(y_i\) 染成同一种颜色,所以 \(x_i\) 染成另一种颜色。

证明考虑交换一对 \(x_i\)、\(y_i\),比较简单,也很好理解,这里就不写了。

2. 最大值和最小值同色

此时,其中一种颜色的极差已经固定,为所有数的极差,我们的目标是让另一种颜色的极差尽量小。

下面记 选一个盒子 表示把这个盒子的 \(x_i\) 划分到另一种颜色,这种颜色(即上文另一种颜色)的其余部分由其余盒子的 \(y_i\) 组成。

首先将盒子按照 \(x_i\) 排序

此时可以证明,选出的盒子一定是从某个位置 \(p\) 开始的一段后缀 \((p > 1)\)

证明如下:

  • 假设当前选了后 \(p\) 个盒子。由于按照 \(x_i\) 排过序,所以最大值为 \(maxx = \max(x_n, \max\{y_i\})\),最小值为 \(minn = \min(x_p, \min\{y_i\})\)。记此时极差

  • 若在前 \(n-p\) 个位置中,还选了一个盒子 \(k\)。则此时最大值 \(maxx^{'} = maxx\),最小值 \(minn^{'}= \min(x_k, \min\{y_i\})\)

  • 还是由于 \(x_i\) 有序,所以 \(minn^{'} \le minn\)。所以不选 \(k\) 时,极差不会比选 \(k\) 更大。

  • 所以选的一定是一段后缀

所以枚举 \(p\),维护 \(y_i\) 的前缀最大值和前缀最小值即可。

记得和第一种情况取最小值。

Code

#include <cstdio>
#include <algorithm> using namespace std; typedef long long ll;
const int MAXN = 200010;
const int INF = 0x3f3f3f3f; int n;
struct ball{
int x, y;
ball(int X=0,int Y=0):x(X),y(Y){}
inline bool operator<(const ball&o)const{return x<o.x;}
}a[MAXN]; int main()
{
// freopen("ball.in","r",stdin);
// freopen("ball.out","w",stdout);
scanf("%d",&n);
int maxx = 0, minx = INF, maxy = 0, miny = INF;
for(int i=1,u,v;i<=n;i++)
{
scanf("%d%d",&u,&v);
a[i].x = min(u, v);
a[i].y = max(u, v);
maxx = max(maxx, a[i].x);
minx = min(minx, a[i].x);
maxy = max(maxy, a[i].y);
miny = min(miny, a[i].y);
}
ll ans = 1ll*(maxx-minx)*(maxy-miny);
ll val1 = maxy - minx;
sort(a+1, a+n+1);
minx = INF; maxx = 0;
for(int i=1;i<n;i++)
{
minx = min(minx, a[i].y);
maxx = max(maxx, a[i].y);
ans = min(ans, val1*(max(maxx, a[n].x) - min(minx, a[i+1].x)));
}
printf("%lld\n",ans);
return 0;
}

[ARC073C] Ball Coloring的更多相关文章

  1. 【arc073e】Ball Coloring(线段树,贪心)

    [arc073e]Ball Coloring(线段树,贪心) 题面 AtCoder 洛谷 题解 大型翻车现场,菊队完美压中男神的模拟题 首先钦定全局最小值为红色,剩下的袋子按照其中较大值排序. 枚举前 ...

  2. Ball Coloring

    6552: Ball Coloring 时间限制: 1 Sec  内存限制: 128 MB提交: 13  解决: 7[提交][状态][讨论版][命题人:admin] 题目描述 There are N ...

  3. ARC 73 E - Ball Coloring

    E - Ball Coloring Time limit : 2sec / Memory limit : 256MB Score : 700 points Problem Statement Ther ...

  4. ARC073E Ball Coloring

    Problem AtCoder Solution 把点映射至二维平面,问题就变成了给定 \(n\) 个点,可以把点对 \(y=x\) 对称,求覆盖所有点的最小矩形面积. 可以先把所有点放到 \(y=x ...

  5. [AT2557] [arc073_c] Ball Coloring

    题目链接 AtCoder:https://arc073.contest.atcoder.jp/tasks/arc073_c 洛谷:https://www.luogu.org/problemnew/sh ...

  6. AtCoder Regular Contest 073 E:Ball Coloring

    题目传送门:https://arc073.contest.atcoder.jp/tasks/arc073_c 题目翻译 给你\(N\)个袋子,每个袋子里有俩白球,白球上写了数字.对于每一个袋子,你需要 ...

  7. AtCoder瞎做第二弹

    ARC 067 F - Yakiniku Restaurants 题意 \(n\) 家饭店,\(m\) 张餐票,第 \(i\) 家和第 \(i+1\) 家饭店之间的距离是 \(A_i\) ,在第 \( ...

  8. 【AtCoder】ARC073

    ARC 073 C - Sentou 直接线段覆盖即可 #include <bits/stdc++.h> #define fi first #define se second #defin ...

  9. AtCoder Regular Contest

    一句话题解 因为上篇AGC的写的有点长……估计这篇也短不了所以放个一句话题解方便查阅啥的吧QwQ 具体的题意代码题解还是往下翻…… ARC 058 D:简单容斥计数. E:用二进制表示放的数字,然后状 ...

  10. AtCoder刷题记录

    构造题都是神仙题 /kk ARC066C Addition and Subtraction Hard 首先要发现两个性质: 加号右边不会有括号:显然,有括号也可以被删去,答案不变. \(op_i\)和 ...

随机推荐

  1. 使用windows平板学习与办公的一些经历(酷比魔方i9篇)

    大概是在2019年的时候,我在某平台上购买了900元的二手windows平板电脑,酷比魔方i9 首先谈谈背景.当时我手里是有个笔记本,屏幕大概15.6寸,4G+256G的,平时用的时候功率平均20几W ...

  2. VIM、VI编辑中一个Tab设置为4个空格

    配置方式 配置方式主要两种: 当前用户目录下创建或修改~/.vimrc Root用户下修改/etc/virc 和 /etc/vimrc 在文件末尾添加如下内容: set ts=4 set softta ...

  3. 关于vCenter6.7 导出的ovf 不能导入vCenter6.5/6.0的问题

    正常从6.7导出ovf文件,包含四个文件. 编辑ovf文件,删除下面五条条目, 导入6.5时, 只用 ovf 和 vmdk 这两个文件导入 ,即可!

  4. 【坑】 centos 7.6 使用ssh 秘钥登录遇到的问题

    问题: 我在master1上面创建了一个ssh的秘钥文件,通过ssh-copy-id 传送四台主机,然后使用ansible all -m ping 发现有台机器就是有问题 这是怎么回事???一样的配置 ...

  5. python 链表推导式x for xx in yy

    一.(x for xx in yy )当x为固定参数 如: n = 10 # 生成n个0 matrix = [0 for i in range(n)]# 这里面0代表返回值,后面的for循环就是返回的 ...

  6. Smartbi 日志监控工具

    用户日志-开始监控

  7. gRPC 入门(一)

    前言 在学习 gRPC 之前,先学习 protobufu 协议,简单的来理解,我们可以使用他来定义 消息 和 服务.然后你只需要实现服务即可,剩下的东西,gRPC 会帮你自动完成. protobufu ...

  8. 阿里云仓库构建gcr镜像

    经常用到gcr的镜像,但是由于国内无法访问,使用阿里云仓库构建 例如需要获取:gcr.io/spiffe-io/spire-server:1.0.1 镜像 1.使用阿里云code,创建项目,新项目 增 ...

  9. ES6-moudle

    一.基础认知 结合案例体验module: 前面模拟模块是用立即执行的匿名函数,需要把某些通过window暴露出去,所以还是不能消除全局变量 module模块系统需要服务器环境才能正常执行,在html文 ...

  10. 6.mysql优化案例

    1.单表优化:  进行优化: 删除原来的三个字段的索引,创建二个字段的索引: 2.两表关联: 左连接,在右表创建索引   右连接,在左表创建索引: 3.三表关联:左关联全都在右表创建索引: