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. 高德地图 MCP,可用 Java SolonMCP 接入(支持 java8, java11, java17, java21)

    1.MCP技术概述 1.1 什么是 MCP MCP (Model Control Protocol) 是一种允许大模型与外部工具交互的协议,高德地图基于此协议提供了地图服务能力,使 AI 大模型能够直 ...

  2. String to Integer (atoi)——LeetCode进阶路⑧

    原题链接https://leetcode.com/problems/string-to-integer-atoi/ 说实话,看到这道题之前,看这通过率有点慌,到底是因为啥 让一道medium的题目这么 ...

  3. 杂七杂八系列----浅谈.NET微服务架构的演变

    服务架构的演变 单体架构=>分布式架构=>SOA架构=>微服务架构=>Service Mesh=>Cloud Native 单体架构/垂直架构 分布式架构 SOA架构 微 ...

  4. React-Native开发鸿蒙NEXT-图片上传

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  5. RBMQ与odoo15的集成

    背景:在对接物联网设备时候常用的协议就是:MQTT.AMQ.https.还有WebSocket,此案例就是针对接物联网设备传输的消息的消费 原理:通过新建守护线程的方式来启动mq服务,来消费设备平台端 ...

  6. java实现一个接口多个实现类,并且调用指定实现方法@Service

    接口 package cn.daenx.framework.notify.sms.service; import cn.daenx.framework.common.vo.system.utils.S ...

  7. git创建远程分支

    如果有个叫 serverfix 的分支需要和他人一起开发,有两种方式可以创建远程分支origin/serverfix 1.git push origin serverfix 2.git push or ...

  8. FastAPI安全认证:从密码到令牌的魔法之旅

    title: FastAPI安全认证:从密码到令牌的魔法之旅 date: 2025/06/02 13:24:43 updated: 2025/06/02 13:24:43 author: cmdrag ...

  9. Flask之model以及缓存

    Flask默认并没有提供任何数据库操作的API. Flask中可以自己的选择数据,用原生语句实现功能,也可以选择ORM(SQLAlchemy,MongoEngine)原生SQL缺点 代码利用率低,条件 ...

  10. Web前端入门第 64 问:JavaScript 几种函数定义方式有什么区别?

    函数 作为 JS 的一等公民,随处可见它的身影. 我理解的它最主要作用就是用来提取重复代码,但凡有 JS 代码需要复制粘贴的时候,那么这时候就可以考虑使用函数封装了. 当函数写在对象中的时候,这时候它 ...