D. Come a Little Closer

codeforces原题链接:https://codeforces.com/contest/2114/problem/D

Output

For each test case, output a single integer — the minimum cost to destroy all n

monsters.

Example

Input

7
3
1 1
1 2
2 1
5
1 1
2 6
6 4
3 3
8 2
4
1 1
1 1000000000
1000000000 1
1000000000 1000000000
1
1 1
5
1 2
4 2
4 3
3 1
3 2
3
1 1
2 5
2 2
4
4 3
3 1
4 4
1 2

Output

3
32
1000000000000000000
1
6
4
8

思路:

这道题使用multiset来解决似乎非常合适,首先先用vector分别存储每个怪物x和y的坐标

接着,每次输入插入坐标

这时候特判一波n=1的情况,如果为1直接输出答案

接下来遍历每个怪物作为被移动的那个的情况

特判类似样例1的情况

如果区域面积s小于了n说明说这时候是塞不下所有的怪兽的,考虑将x方向扩大一个间隔或者y方向扩大一个间隔的情况,然后更新ans

其余情况就是直接更新ans

题解

#include <bits/stdc++.h>
using namespace std;
const int N=2e5+10;
typedef long long ll;
typedef unsigned long long ull;
int t;
int n;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>t;
while(t--)
{
cin>>n;
vector<ll> vx(n),vy(n);
multiset<ll>mx,my;
for(int i=0;i<n;i++)
{
cin>>vx[i]>>vy[i];
mx.insert(vx[i]);
my.insert(vy[i]);
}
if(n==1)
{
cout<<1<<endl;
continue;
}
ll ans = LLONG_MAX;
for(int i=0;i<n;i++)
{
mx.erase(mx.find(vx[i]));
my.erase(my.find(vy[i])); ll rx = *mx.rbegin();
ll lx = *mx.begin();
ll ry = *my.rbegin();
ll ly = *my.begin();
ll s = (rx-lx+1)*(ry-ly+1); if(s==n-1)
{
ll s1 = (rx-lx+2)*(ry-ly+1);
ll s2 = (rx-lx+1)*(ry-ly+2);
ans = min(ans,min(s1,s2));
}
else ans = min(ans,s);
mx.insert(vx[i]);
my.insert(vy[i]);
}
cout<<ans<<endl; } return 0;
}

CF1027D. Come a Little Closer (multiset使用)的更多相关文章

  1. C++ std::multiset

    std::multiset template < class T, // multiset::key_type/value_type class Compare = less<T>, ...

  2. Guava学习笔记:Guava新增集合类型-Multiset

    Guava引进了JDK里没有的,但是非常有用的一些新的集合类型.所有这些新集合类型都能和JDK里的集合平滑集成.Guava集合非常精准地实现了JDK定义的接口.Guava中定义的新集合有: Multi ...

  3. [Google Guava]学习--新集合类型Multiset

    Guava提供了一个新集合类型Multiset,它可以多次添加相等的元素,且和元素顺序无关.Multiset继承于JDK的Cllection接口,而不是Set接口. Multiset主要方法介绍: a ...

  4. UVA11136Hoax or what( multiset的应用)

    题目链接 题意:n天,每天往一个箱子里放m个数,放完之后取最大的Max和最小的min做差,并把这两个数去掉,求n天之后的和 multiset 和 set的原理是相似的,multiset可以存多个相同的 ...

  5. 4.2 set和multiset

    使用必须包含头文件set 1)multiset *:定义 如果不给第二个参数,默认less<key>,即用<来进行. 例如: A是一个类的名字,则可以定义一个容器对象如下: mult ...

  6. STL(multiset) UVA 11020 Efficient Solutions

    题目传送门 题意:训练指南P228 分析:照着书上的做法,把点插入后把它后面不占优势的点删除,S.size ()就是优势的人数,时间复杂度O (nlogn) #include <bits/std ...

  7. Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset(可持久化Trie)

    D. Vasiliy's Multiset time limit per test 4 seconds memory limit per test 256 megabytes input standa ...

  8. STL中的set/multiset小结

    (1)使用set/multiset之前必须包含头文件<set>:#include<set> (2)namespace std{ template <class T, cl ...

  9. STL--集和多集(set/multiset)

    与基本容器相比,关联容器更注重快速和高效地检索数据的能力.这些容器是根据键值(key)来检索数据的,键可以是值也可以是容器中的某一成员.这一类中的成员在初始化后都是按一定顺序排好序的. 本文地址:ht ...

  10. C++ Set & MultiSet

    转自http://www.cppblog.com/wanghaiguang/archive/2012/06/05/177627.html STL Set介绍集合(Set)是一种包含已排序对象的关联容器 ...

随机推荐

  1. 网络编程:select

    原理:参考:https://my.oschina.net/fileoptions/blog/911091 select中内核函数有哪些 源码实现: #undef __NFDBITS #define _ ...

  2. FastAPI与MongoDB Change Stream的实时数据交响曲

    title: FastAPI与MongoDB Change Stream的实时数据交响曲 date: 2025/05/25 13:04:40 updated: 2025/05/25 13:04:40 ...

  3. odoo18运行报错问题解决

    File "/Users/melon/.pyenv/versions/3.11.9/lib/python3.11/code.py", line 90, in runcode exe ...

  4. Python中的cls变量

    技术背景 在Python的类型设计中,有时候会遇到一个cls参数.其实cls参数就是一个约定俗成的名称,用其他的名字也能正常运行但不建议这么用.它的作用类似于实例方法中的self参数,代表的是类本身, ...

  5. 使用scheduler-plugins实现自定义调度器

    一.环境说明 开发环境 部署环境 操作系统 Windows10 Centos7.9 Go版本 go version go1.24.2 windows/amd64 go version go1.23.6 ...

  6. python的 range() 函数

    python range() 函数可创建一个整数列表,一般用在 for 循环中. range(start, stop[step]) range(10) # 从 0 开始到 10 [0, 1, 2, 3 ...

  7. 物无弃材 —— 混闪机型部署 OceanBase 集群的探索

    本文作者:联通研究院 邱永刚 首先为大家推荐这个 OceanBase 开源负责人老纪的公众号 "老纪的技术唠嗑局",会持续更新和 #数据库.#AI.#技术架构 相关的各种技术内容. ...

  8. ArcObjects SDK 023 开发框架搭建-MainApp

    MainApp定义了启动界面,主界面等.主界面的整体流程如下. 1.验证许可. //ArcGIS许可验证 RuntimeManager.Bind(ProductCode.Desktop); var m ...

  9. ArcObjects SDK 009 Map-Layer的结构

    1.Map-Layer主干结构 一个mxd文件可以包含多个地图,但我们常用的大部分都是包含一个地图.一个地图可以包含多个图层组和图层,而图层指向的则是实际数据.图层可以控制数据是否显示.显示样式.最大 ...

  10. python 安装的国内镜像源

    Python 镜像源是指可以用来下载 Python 相关软件包的在线仓库地址.Python 在国内使用的比较广泛,为了提高安装包的下载速度,一般会配置国内镜像源.常见的 Python 镜像源包括以下几 ...