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. AI模型的回调能力的理解和实现

    前言 BigTall最近把RAG和Agent的原理想通了,对于"一切都是提示词"的理解又更多了一些.本文把我的理解大致整理了一下,给出BigTall自己的一个实验.希望能够对大家有 ...

  2. 使用Flask和OpenAI构建实时AI聊天应用

    在当今AI技术迅速发展的时代,将AI能力集成到Web应用中已成为一种趋势.本文将分享我如何使用Flask框架和OpenAI API构建一个实时聊天应用,让用户可以与AI助手"Melon&qu ...

  3. JVM 使用jstat分析系统的垃圾回收情况

    jstat -gcutil 输出结果分析_助你了解jvm命令,查找JVM堆栈信息,分析性能问题.下面介绍一下jstat命令: jstat:虚拟机统计信息监视工具(JVM Statistics Moni ...

  4. MySQL Explain查看执行计划详解

    目录 前言 EXPLAIN 中的列 id 和select_type table type possible_keys key 和 key_len ref 和 rows Extra 小结 Referen ...

  5. 文艺平衡树FHQ-Treap-指针版

    文艺平衡树FHQ-Treap-指针版 文艺平衡树 FHQ-Treap-指针版 代码存档 AC-C++11 385ms 9.09MB AC-C++11 O2 394ms 9.23MB 貌似这玩意厌氧啊 ...

  6. Go标准库Cond

    Go标准库的Cond Go 标准库提供 Cond 原语的目的是,为等待 / 通知场景下的并发问题提供支持.Cond 通常应用于等待某个条件的一组 goroutine,等条件变为 true 的时候,其中 ...

  7. 构建RPM之SPEC详解

    一.简单说明 在centos/rhel的系统使用中,我们会涉及自己构建一些rpm包在centos/rhel的系统中进行安装,这里涉及rpm打包环境的部署.SPEC文件的编写相关,下面我们具体进行说明. ...

  8. jenkins的搭建及问题处理

    Jenkins搭建第一步 本文讲述的本人搭建Jenkins的流程及遇到的坑及处理方法 1.搭建 Linux操作系统为Centos Jenkins版本为24稳定版 操作命令: sudo wget -O ...

  9. 性能、安全和稳定,袋鼠云数据服务平台 DataAPI 为企业 API 保驾护航

    通过API 对外提供数据服务是大部分企业中比较常见的数据应用方式,对于 API 平台管理者.开发者和调用者来说,API 的调用性能.安全性和稳定性是在平台选型时最需要考虑的三个因素. 袋鼠云API开发 ...

  10. UFT 对文件的处理(scripting.filesystemObject)

    1. 文件路劲 2. 文件大小 3.写 4. 读 5. 复制 6. 内容替换