[ARC073C] Ball Coloring
简要题意
\(N\) 个盒子,每个盒子里有两个数。现在要把盒子中的数分成两种颜色,满足:
- 每个盒子中的数分别属于两种颜色,每个数恰好属于一种颜色
- 两种颜色的数的极差的乘积最小
求这个最小值
\(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的更多相关文章
- 【arc073e】Ball Coloring(线段树,贪心)
[arc073e]Ball Coloring(线段树,贪心) 题面 AtCoder 洛谷 题解 大型翻车现场,菊队完美压中男神的模拟题 首先钦定全局最小值为红色,剩下的袋子按照其中较大值排序. 枚举前 ...
- Ball Coloring
6552: Ball Coloring 时间限制: 1 Sec 内存限制: 128 MB提交: 13 解决: 7[提交][状态][讨论版][命题人:admin] 题目描述 There are N ...
- ARC 73 E - Ball Coloring
E - Ball Coloring Time limit : 2sec / Memory limit : 256MB Score : 700 points Problem Statement Ther ...
- ARC073E Ball Coloring
Problem AtCoder Solution 把点映射至二维平面,问题就变成了给定 \(n\) 个点,可以把点对 \(y=x\) 对称,求覆盖所有点的最小矩形面积. 可以先把所有点放到 \(y=x ...
- [AT2557] [arc073_c] Ball Coloring
题目链接 AtCoder:https://arc073.contest.atcoder.jp/tasks/arc073_c 洛谷:https://www.luogu.org/problemnew/sh ...
- AtCoder Regular Contest 073 E:Ball Coloring
题目传送门:https://arc073.contest.atcoder.jp/tasks/arc073_c 题目翻译 给你\(N\)个袋子,每个袋子里有俩白球,白球上写了数字.对于每一个袋子,你需要 ...
- AtCoder瞎做第二弹
ARC 067 F - Yakiniku Restaurants 题意 \(n\) 家饭店,\(m\) 张餐票,第 \(i\) 家和第 \(i+1\) 家饭店之间的距离是 \(A_i\) ,在第 \( ...
- 【AtCoder】ARC073
ARC 073 C - Sentou 直接线段覆盖即可 #include <bits/stdc++.h> #define fi first #define se second #defin ...
- AtCoder Regular Contest
一句话题解 因为上篇AGC的写的有点长……估计这篇也短不了所以放个一句话题解方便查阅啥的吧QwQ 具体的题意代码题解还是往下翻…… ARC 058 D:简单容斥计数. E:用二进制表示放的数字,然后状 ...
- AtCoder刷题记录
构造题都是神仙题 /kk ARC066C Addition and Subtraction Hard 首先要发现两个性质: 加号右边不会有括号:显然,有括号也可以被删去,答案不变. \(op_i\)和 ...
随机推荐
- 渗透H5棋牌游戏-棋牌游戏开发
0x01 前言 本來不想发的,涉及太多利益了,這些棋牌游戏的源码最高能卖到几万.开发起来不比一个商场进程难. 最近又太忙了,沒时间去做代码审计的文章了,但一不小心又抢了个运气王... 0x02 开始 ...
- echars中国地图
vue中使用echars做出中国地图 这里只是个小demo,根据流程操作可以实现基础的中国地图,样式等后面根据需要自己去调 1.下载中国地图 echars官网示例中,没有中国地图的json,需要自己去 ...
- 一些JVM指令
1.jps:查看本机java进程信息. 2 .jstack:打印线程的栈信息,制作线程dump文件. 3.jmap:打印内存映射,制作堆dump文件 4.jstat:性能监控工具 5.jhat:内存分 ...
- kubeSphere+kubernetes 集群更新证书
模拟问题点 使用kubernetes时错误提示 yang@master:~$ kubectl get nodes Unable to connect to the server: x509: cert ...
- [转载]Linux关于磁盘操作命令
一.查看篇 1.1.du : 查看文件和 目录的使用空间 语法: du [参数] [文件或目录] 参数 说明 -a 列出所有的文件与目录容量. -h 以G.M.K为单位,返回容量. -s 列出总量. ...
- zzul1073_Java
import java.util.Scanner;/** * 限制解是正数,且脚数为偶数即可 */public class zzul1073 { public static void main(Str ...
- MacBook + 移动SSD实现三系统(Mac OS、windows、ubuntu)
Windows系统安装 1.我们先要在windows的电脑上下载好,你需要的windows镜像文件(下载地址:https://msdn.itellyou.cn/,个人建议用迅雷下载),下载好winto ...
- async/await和promise的执行顺序
原题: async function async1() { console.log("async1 start"); await async2(); console.log(&qu ...
- sap软件功能介绍及主要功能(模块)有哪些?
SAP 成立于 1972 年,最初称为 System Analysis Program Development (Systemanalyse Programmentwicklung),后来采用缩写 S ...
- 转载-GNSS缩写
GNSS常用的缩略语汇总,可能不全,但会不断丰富,欢迎各位批评指正!! 1|01.大表格 缩略语 全称 中文 ADOP ambiguity dilution of precision 模糊度精度因子 ...