[bzoj1359][Baltic2009]Candy

2023-11-11

给定N个数对$(T_i,S_i)$,表示时刻$S_i$时在位置$T_i$处出现一粒糖果。有一些机器人可供使用,每个机器人可花费一单位时间向相邻位置移动。要求用最少的机器人接到全部糖果。时刻0时机器人位置可自行安排。

$1 \leq N \leq100000$, $0 \leq S_i,T_i \leq 10^9$。
好题。首先可以想到转化成二维点对的问题。
对于两点$(x,y)$和$(p,q)$,两点之间能连线的要求是$|x-p| \geq |y-q|$。
要求用最少的折线覆盖所有的点。
我们只考虑时间小的向大的连边。不妨令$p<x$
不考虑相等的情况下,对$x,p$,$y,q$的大小关系进行讨论。
$\left\{\begin{array}{l}x>p\\y>q\end{array}\right.$,这时还需满足$x-p \geq y-q$;
$\left\{\begin{array}{l}x>p\\y<q\end{array}\right.$,这时还需满足$x-p \geq q-y$;
而如果$p>x$时
$\left\{\begin{array}{l}p>x\\y>q\end{array}\right.$或$\left\{\begin{array}{l}p>x\\q>y\end{array}\right.$
发现符合条件的两种情况都满足$x-y \geq p-q$且$x+y \geq p+q$。而两种不合法的均不满足两者其一。
于是就转化成了二维偏序,,,点i的两个关键字如果都比点j大则可以连边。等于也是可以的。
贪心的思路比较显然,保证$x+y$有序的前提下,找到$x-y$与小于等于当前$x-y$值,且差最小的那个。(更小的一定不更优)。如果找不到就新添加一个机器人。用set维护即可,复杂度$O(nlogn)$。
#include<bits/stdc++.h>
using namespace std;
const int N=100010;
typedef pair<int,int> P;
inline int read(){
    int r=0,c=getchar();
    while(!isdigit(c))c=getchar();
    while(isdigit(c))
    r=r*10+c-'0',c=getchar();
    return r;
}
int ans,n;P a[N];
set<int>S;
set<int>::iterator it;
int main(){
    ans=n=read();
    for(int i=1;i<=n;i++){
        int y=read(),x=read();
        a[i]=P(x+y,x-y);
    }
    sort(a+1,a+n+1);
    for(int i=1;i<=n;i++){
        int t=a[i].second;
        it=S.upper_bound(t);
        if(it!=S.begin())
        S.erase(--it),ans--;
        S.insert(t);
    }
    printf("%d\n",ans);
}

 

 

转载于:https://www.cnblogs.com/orzzz/p/8647561.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[bzoj1359][Baltic2009]Candy 的相关文章

  • 数据结构与算法(三):栈与队列

    一 栈 1 基本概念 2 栈的顺序存储结构 3 两栈共享空间 4 栈的链式存储结构 5 栈的应用 递归 二 队列 1 基本概念 2 队列的顺序存储结构 三 总结 上一篇 数据结构与算法 二 线性表 中介绍了数据结构中线性表的两种不同实现 顺
  • 反转链表+交换两个链表的节点

    目录 编辑 一 反转链表 1 题目描述 2 例子 3 题目接口 4 分析以及解题代码 1 迭代法 2 递归写法 二 两两交换两个链表中的节点 1 题目描述 2 例子 3 题目接口 4 题目分析以及解法 一 反转链表 1 题目描述 首先来看看
  • Chapter One : 开启 Python 之旅

    目录 1 计算机的组成 了解 2 计算机如何处理程序的 了解 3 编程语言 了解 4 了解 Python 4 1 Python 的版本 4 2 Python 的应用领域 5 搭建 Python 开发环境 5 1 下载并安装 Python 2
  • linux c 打印调用某函数的文件名与行

    只做记录 供自己翻 http www voidcn com article p ruuoijoc mn html
  • win全盘重分- DiskGenius

    因为最近找不到了太好的素材 来整理一下全盘重分的素材 全盘分区最好的是制作U盘启动器 在U盘的PE里进行分区 使用工具是相当简单的 PE使用的是冰封U启动 第一步打开DiskGenius软件 算是系统重装分区用的最多的也是最普遍的工具之一
  • 【概率论与数理统计】猴博士 笔记 p26-28 F、f的性质、一、二维连续型求期望、方差

    F f的性质 做法 上述公式的原理 做一些题目来练习套公式 例1 解 P X 2 F
  • Pycharm中如何配置已有的环境

    这篇是关于在pycharm中配置已经在anaconda中存在的虚拟环境 1 File settings 2 在设置弹窗中选择Project Interpreter 然后点击add 3 根据图操作 4 随后找到Anaconda中envs中想要
  • 2022年苹果开发者账号/AppleID如何更改绑定的手机号

    2022年苹果开发者账号 AppleID如何更改绑定的手机号 1 打开Apple ID 网址 登陆进去 https appleid apple com cn 2 点击编辑选项 将原来的手机号删除 然后添加受信任号码 点击完成 修改密码 修改
  • sendto: Network is unreachable问题的解决

    在用busybox生成根文件系统之后 进入系统ping外网是不能用的 因此需要修改一下几个文件 配置ip为固定 并且开机自动启动网卡 在 etc init d rcS中添加一下内容 网络开机自启动设置 ifconfig eth0 up ud
  • RabbitMQ整合SpringBoor以及RabbitMQ的延迟队列

    延迟队列的概念 前面介绍了死信队列 针对于ttl进入死信队列的情况 假如我们把前面的消费者一关闭 然后对所有的消息都进行设置过期时间 这样是不是就形成了一个延迟队列了 使用场景 比如订单超时关闭 假如我们使用定时任务 假如数据量很大的情况下
  • SpringBoot —— 搭建SpringBoot+Maven项目

    文章目录 前言 一 创建步骤 1 创建SpringBoot项目 选择JDK版本 2 填写包名和项目名 3 创建web项目 4 创建web项目 二 测试 1 配置maven 2 创建测试方法 前言 SpringBoot系列Demo代码 使用i
  • 【复盘与分享】第十一届泰迪杯B题:产品订单的数据分析与需求预测

    文章目录 题目 第一问 第二问 2 1 数据预处理 2 2 数据集分析 2 2 1 训练集 2 2 2 预测集 2 3 特征工程 2 4 模型建立 2 4 1 模型框架和评价指标 2 4 2 模型建立 2 4 3 误差分析和特征筛选 2 4
  • python设置绘图大小_解决Python图形界面中设置尺寸的问题

    Python有自己内置的标准GUI库 Tkinter 只要安装好Python就可以调用 今天学习到了图形界面设计的问题 刚开始就卡住了 为啥呢 就是用geometry size 设置窗口尺寸大小 如800X600 X 从哪里来成了问题 首先
  • 你若有心,我怎会无情

    人和人之间 全靠一颗心 情与情之间 全看一份真 一生很长 什么样的人都会遇到 有的人口蜜腹剑 嘴上跟你说着甜言蜜语 心里却盘算着利用你得到些什么 有的人虚伪自私 表面上跟你掏心掏肺 等你需要帮助的时候却转身离开 所以 看人 不能只看表面 也
  • 复制构造函数(拷贝构造函数)

    也许很多C 的初学者都知道什么是构造函数 但是对复制构造函数 copy constructor 却还很陌生 对于我来说 在写代码的时候能用得上复制构造函数的机会并不多 不过这并不说明复制构造函数没什么用 其实复制构造函数能解决一些我们常常会
  • #1062 - Duplicate entry '0' for key 'PRIMARY'—— mysql的小问题

    问题 1062 重复输入 0 原因 我估计可能是数据表中主键这一栏已经有一个为 0 了 一般出现这种问题是以int类型的字段在输入时没有输如数据 而int类型默认值为 0 而你之前第一条数据已经默认主键如 id为默认的 0 了 于是就报错说
  • java list有序还是无序_java的集合框架

    前言 使用java编程语言的开发人员 在日常开发过程中经常会使用到java的一些集合类 不过这些集合类太多 很多人对它们的特点和使用场景不是特别的了解 通过此文给大家总结一下这方面的知识 方便大家面试或者是初学者理解 Java集合类主要由C
  • 四均线交易系统

    策略说明 基于4均线系统进行判断交易 系统构成 5和20周期均线 3和10周期均线 构成的两组不同周期的均线组合 入场条件 当2组均线均成空头排列时且当前价低于上根BAR最低价入场 出场条件 1 小周期空头均线组合成多头排列 2 两组多头均
  • C++ 获取系统时间(微秒)

    int main 程序开始时间 std chrono time point
  • Python制作一款简单的乒乓球小游戏

    开发工具 Python版本 3 6 4 相关模块 pygame模块 以及一些Python自带的模块 相关文件 关注公众号 Python学习指南 回复 乒乓球 即可获取 环境搭建 pip安装需要的相关模块即可 原理简介 游戏规则 操作 玩家1

随机推荐

  • AWS SAA-C03 #49

    A company stores call transcript files on a monthly basis Users access the files randomly within 1 year of the call but
  • 虚拟机磁盘扩容

    1 前言 现在做开发时 虚拟机的使用很多 经常遇到这样的问题 当初创建虚拟机的时候开辟的磁盘空间比较小 随着虚拟机安装的软件越来越多所占的空间也越来越大 导致虚拟机的磁盘空间越来越少 甚至不够用 此时我们便可以对虚拟机的磁盘大小进行扩容 简
  • 中秋闲鱼卖货,月入过万的新玩法?

    中秋节越来越近了 都开始忙着走亲串友 人情社会关系要多走动 虽然大家都在忙着搞钱 但是逢年过节要停下脚步享受美好生活 月圆中秋思念满满每逢佳节倍思亲 在异国他乡的朋友因疫情不能回家团聚 但现在移动互联网给人们生活带来太多便捷 打电话语音视频
  • 获得用户输入的一个字符串,输出其中字符a的出现次数

    task19 获得用户输入的一个字符串 输出其中字符a的出现次数 name wangzilu date 2020 2 19 task 获得用户输入的一个字符串 输出其中字符a的出现次数 first way x str input pleas
  • shell 重定向到文件

    首先明确基本 gt dev null 输出到空设备 表示丢掉输出信息 2 gt 1 将输出到标准错误的信息输出到标准输出设备 通常是屏幕 有3个默认的i o 0 是标准输入 一般是键盘 1 是标准输出 一般是屏幕了 2 是标准错误 有时候屏
  • 编程笔记:Windows Forms in C#

    1 画线时遇到的奇怪问题 以下摘取部分代码 Graphics g null g CreateGraphics private void Form1 MouseMove object sender MouseEventArgs e 下面三行代
  • 第七章、并发编程实战项目

    一 并发任务执行框架 架构师是什么 在一个软件项目开发过程中 将客户的需求转换为规范的开发计划及文本 并制定这个项目的总体架构 指导整个开发团队完成这个计划的那个人 就是 架构师 一般是一个项目里的最资深的专业技术人员 可以说架构师首先一定
  • 【SDOI2016】数字配对【建立二分图+费用流求方案数】

    题目链接 首先 我们可以看一下这个推导过程 如果 那么 对于 就一定不是质数 一定是它的一个因子 于是可以看出 这一定是一幅二分图 于是 可以根据二分图的性质来确定了每个点的属于S边还是T边了 include
  • 《深入理解mybatis原理》 MyBatis事务管理机制

    版权声明 本文为博主原创文章 未经博主允许不得转载 https blog csdn net u010349169 article details 37992171 MyBatis作为Java语言的数据库框架 对数据库的事务管理是其非常重要的
  • 在手机端点击input框不弹出输入法的方法

    1 使用CSS样式 input pointer events none 2 使用事件阻止 input onmousedown function e e preventDefault 这样不仅会阻止键盘 同时 input 会失去光标跟随 如果
  • 通俗易懂的LSTM

    目录 一 LSTM的基础知识 1 长依赖的问题 2 LSTM的核心 3 LSTM的门结构 4 LSTM门结构的作用 5 LSTM的变体 GRU 二 LSTM的补充知识 1 LSTM缓解梯度消失的原因 一 LSTM的基础知识 1 长依赖的问题
  • Python OpenCV 解决人脸识别报错cascade.detectMultiScale error

    Authored by Monana Contact me via serena9636 163 com 环境 Python2 7 OpenCV3 1 0 Win 64bit 我想在OpenCV中实现一段如下的很简单的人脸识别代码 这也是在
  • vsCode返回上一步

    vsCode返回上一步 windows Alt 上下左右的左箭头 Linux Ctrl Alt 减号
  • 图像信噪比的理解

    图像的信噪比和图像的清晰度一样 都是衡量图像质量高低的重要指标 图像的信噪比是指视频信号的大小与噪波信号大小的比值 其公式为 S N 信噪比 20 log 信号 噪声 dB 信噪比大 图像画面就干净 看不到什么噪波干扰 表现为 颗粒 和 雪
  • 使用VMware完成KVM虚拟化实验并运行Centos

    本次实验在VMware中的Ubuntu18内安装KVM并运行centos 首先 在VMware下开启虚拟化 更新软件索引 apt get update 安装依赖 apt get install qemu kvm qemu virt mana
  • js验证姓名,包括少数民族名字中的·,后你哦·就两节课了

    姓名验证 u4E00 u9FA5 uf900 ufa2d s 2 20 亲测
  • Outlook VBA自动处理邮件

    需求描述 公司里面每天都会有很多邮件 三分之一都是不需要看的 Outlook的过滤功能不错 都可以处理掉 还有些邮件 根据正文或者附件做一下处理自动转发出去就行了 于是上网搜集了一些资料 写个了小程序 共享一下 以后可以参考 也希望对大家有
  • Linux系列一 VMware 中 Fedora系统的安装与网络配置

    之前一篇文章 简单地总结了自己的Linux假期培训课程 因为自己也打算开始学习Linux 所以就在这里写点东西 记录自己的学习历程 如果也能给大家带去一点帮助的话 甚是欣慰 能力时间有限 难免有疏漏的地方 还希望大家多多批评指正 本篇文章的
  • C++——set 和 multiset

    文章目录 结构 构造 非更易型操作 查找操作 赋值操作 迭代器相关操作 插入和移除操作 自定义排序准则 Set 和 multiset 会根据特定的排序准则 自动将元素排序 两者不同之处在于 multiset 允许元素重复而 set 不允许
  • [bzoj1359][Baltic2009]Candy

    给定N个数对 T i S i 表示时刻 S i 时在位置 T i 处出现一粒糖果 有一些机器人可供使用 每个机器人可花费一单位时间向相邻位置移动 要求用最少的机器人接到全部糖果 时刻0时机器人位置可自行安排 1 leq N leq10000