P2698 [USACO12MAR] Flowerpot S

news2024/11/24 20:57:07

P2698 [USACO12MAR] Flowerpot S

文章目录

  • P2698 [USACO12MAR] Flowerpot S
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例 #1
      • 样例输入 #1
      • 样例输出 #1
    • 提示
    • 思路分析
    • code

[P2698 USACO12MAR] Flowerpot S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目描述

Farmer John has been having trouble making his plants grow, and needs your help to water them properly. You are given the locations of N raindrops (1 <= N <= 100,000) in the 2D plane, where y represents vertical height of the drop, and x represents its location over a 1D number line:

Each drop falls downward (towards the x axis) at a rate of 1 unit per second. You would like to place Farmer John’s flowerpot of width W somewhere along the x axis so that the difference in time between the first raindrop to hit the flowerpot and the last raindrop to hit the flowerpot is at least some amount D (so that the flowers in the pot receive plenty of water). A drop of water that lands just on the edge of the flowerpot counts as hitting the flowerpot.

Given the value of D and the locations of the N raindrops, please compute the minimum possible value of W.

老板需要你帮忙浇花。给出 N N N 滴水的坐标, y y y 表示水滴的高度, x x x 表示它下落到 x x x 轴的位置。

每滴水以每秒 1 1 1 个单位长度的速度下落。你需要把花盆放在 x x x 轴上的某个位置,使得从被花盆接着的第 1 1 1 滴水开始,到被花盆接着的最后 1 1 1 滴水结束,之间的时间差至少为 D D D

我们认为,只要水滴落到 x x x 轴上,与花盆的边沿对齐,就认为被接住。给出 N N N 滴水的坐标和 D D D 的大小,请算出最小的花盆的宽度 W W W

输入格式

第一行 2 2 2 个整数 N N N D D D

接下来 N N N 行每行 2 2 2 个整数,表示水滴的坐标 ( x , y ) (x,y) (x,y)

输出格式

仅一行 1 1 1 个整数,表示最小的花盆的宽度。如果无法构造出足够宽的花盆,使得在 D D D 单位的时间接住满足要求的水滴,则输出 − 1 -1 1

样例 #1

样例输入 #1

4 5
6 3
2 4
4 10
12 15

样例输出 #1

2

提示

4 4 4 滴水, ( 6 , 3 ) (6,3) (6,3) ( 2 , 4 ) (2,4) (2,4) ( 4 , 10 ) (4,10) (4,10) ( 12 , 15 ) (12,15) (12,15) 。水滴必须用至少 5 5 5 秒时间落入花盆。花盆的宽度为 2 2 2 是必须且足够的。把花盆放在 x = 4 … 6 x=4\dots6 x=46 的位置,它可以接到 1 1 1 3 3 3 水滴, 之间的时间差为 10 − 3 = 7 10-3=7 103=7 满足条件。

【数据范围】

40 % 40\% 40% 的数据: 1 ≤ N ≤ 1000 1 \le N \le 1000 1N1000 1 ≤ D ≤ 2000 1 \le D \le 2000 1D2000

100 % 100\% 100% 的数据: 1 ≤ N ≤ 1 0 5 1 \le N \le 10 ^ 5 1N105 1 ≤ D ≤ 1 0 6 1 \le D \le 10 ^ 6 1D106 0 ≤ x , y ≤ 1 0 6 0\le x,y\le10^6 0x,y106

思路分析

枚举左端点

用两个单调队列位数区间最大值和最小值

然后看一下是否满足条件,求一下最小代价就好了

code

#include <bits/stdc++.h>
#define fu(x , y , z) for(int x = y ; x <= z ; x ++)
using namespace std;
const int N = 1e5 + 5 , inf = 1e9 + 5;
int n , d , ans = inf;
struct node {
    int x , y;
} t[N];
bool cmp (node x , node y) { return x.x < y.x; }
list<int> s1;
list<int> s2;
int main () {
    scanf ("%d%d" , &n , &d);
    fu (i , 1 , n)
        scanf ("%d%d" , &t[i].x , &t[i].y);
    sort (t + 1 , t + n + 1 , cmp);
    int r = 0;
    fu (l , 1 , n) {
        while (!s1.empty() && s1.front() < l) s1.pop_front();
        while (!s2.empty() && s2.front() < l) s2.pop_front();
        if (s1.empty()) s1.push_back(l) , s2.push_back(l);
        while (!s1.empty() && !s2.empty() && t[s1.front()].y - t[s2.front()].y < d && r < n) {
            r ++;
            while (!s1.empty() && t[s1.back()].y < t[r].y) s1.pop_back();
            s1.push_back(r);
            while (!s2.empty() && t[s2.back()].y > t[r].y) s2.pop_back();
            s2.push_back(r);
        }
        if (!s1.empty() && !s2.empty() && t[s1.front()].y - t[s2.front()].y >= d) 
            ans = min (ans , t[r].x - t[l].x);
    }
    if (ans == inf) printf ("-1");
    else printf ("%d" , ans);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/783998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【漏洞复现】厦门才茂通信网关formping远程命令执行漏洞

文章目录 前言声明一、漏洞描述二、漏洞复现 前言 厦门才茂通信网关formping存在远程命令执行漏洞&#xff0c;攻击者可通过特定payload对目标服务器发起攻击&#xff0c;造成不可估量的影响。 声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提…

文心一言 VS 讯飞星火 VS chatgpt (65)-- 算法导论6.5 4题

四、在 MAX-HEAP-INSERT 的第 2行&#xff0c;为什么我们要先把关键字设为 -∞ &#xff0c;然后又将其增加到所需的值呢? 文心一言&#xff1a; 在 MAX-HEAP-INSERT 算法的第二行将关键字设为 -∞&#xff0c;是为了保持堆的性质。堆是一种二叉树结构&#xff0c;其中每个节…

python调用文心千帆大模型

一、登录智能云控制台 https://console.bce.baidu.com/ 二、创建AI应用 已登录状态下&#xff0c;进入控制台创建应用 https://console.bce.baidu.com/ai/#/ai/easydlLiteNlp/app/list 应用创建后获取AppID、API Key、Secret Key 三、API调用 import requests import jso…

uniapp项目集成本地插件

在项目根目录下创建nativeplugins文件夹 拷贝插件到目录nativeplugins 在manifest.json -> App原生插件配置 -> 本地插件里勾选插件 删除本地基座和手机app从新自定义基座运行

大白话讲讲 Go 语言的 sync.Map(一)

阅读本文大约需要 4.25 分钟。 程序是枯燥乏味的。 在讲 sync.Map 之前&#xff0c;我们先说说什么是 map&#xff08;映射&#xff09;。 我们每个人都有身份证号码&#xff0c;如果我需要从身份证号码查到对应的姓名&#xff0c;用 map 存储是非常合适的。 map[000...001…

[驱动开发]字符设备驱动应用——点灯

点亮开发板stm32mp157的三盏灯 //头文件 #ifndef __LED_H__ #define __LED_H__//封装GPIO寄存器 typedef struct { volatile unsigned int MODER; // 0x00volatile unsigned int OTYPER; // 0x04volatile unsign…

C++面向对象三大特性 -- 继承

目录 一、继承的概念和定义1.1 继承的概念1.2 继承定义1.2.1定义格式1.2.2 继承方式和访问限定符1.2.3 继承基类成员访问方式的变化 二、父类和子类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承和友元六、继承与静态成员七、复杂的菱形继承及菱形虚拟继承八…

小程序之移花宫-自定义底部标签图标---【浅入深出系列005】

浅入深出系列总目录在000集 如何0元学微信小程序–【浅入深出系列000】 不会导入/打开小程序的看这里 让别人的小程序长成自己的样子-更换window上下颜色–【浅入深出系列001】 文章目录 本系列校训学习资源的选择 学习目标图标的注意事项图标资源打开小程序动手实践找到图标最…

k8s使用helm部署Harbor镜像仓库并启用SSL

1、部署nfs存储工具 参照&#xff1a;https://zhaoll.blog.csdn.net/article/details/128155767 2、部署helm 有多种安装方式&#xff0c;根据自己的k8s版本选择合适的helm版本 参考&#xff1a;https://blog.csdn.net/qq_30614345/article/details/131669319 3、部署Harbo…

P1168 中位数(做法1:使用两个堆,大根堆维护较小的值,小根堆维护较大的值;做法二:vector(pos,x);在地址pos后面加入x)

ACCcode: #include<bits/stdc.h> using namespace std; #define int long long int n,x,mid; priority_queue<int,vector<int>,less<int> >q1;//大根堆 priority_queue<int,vector<int>,greater<int> >q2;//小根堆 void solve() {ci…

逻辑漏洞原理及实战

前言 作者简介&#xff1a;不知名白帽&#xff0c;网络安全学习者。 博客主页&#xff1a;不知名白帽_网络安全,CTF,内网渗透-CSDN博客 网络安全交流社区&#xff1a;https://bbs.csdn.net/forums/angluoanquan 目录 逻辑漏洞基础 概述 分类 URL跳转漏洞 概述 危害 漏洞…

kaggle新赛:Bengali.AI 语音识别大赛赛题解析

赛题名称&#xff1a;Bengali.AI Speech Recognition 赛题链接&#xff1a;https://www.kaggle.com/competitions/bengaliai-speech 赛题背景 竞赛主办方 Bengali.AI 致力于加速孟加拉语&#xff08;当地称为孟加拉语&#xff09;的语言技术研究。Bengali.AI 通过社区驱动的…

【HTML5】拖放详解及实现案例

文章目录 效果预览代码实现 效果预览 代码实现 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>一颗不甘坠落的流星</title><style>#div1,#div2 {float: left;width: 100px;height: 27px;margin: 10px;paddin…

力扣 343. 整数拆分

一、题目描述 给定一个正整数 n&#xff0c;将其拆分为 k 个正整数的和&#xff08;k > 2&#xff09;&#xff0c;并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。示例 2: 输入: n 10 输出: 36 解释: 10 …

5.12 Bootstrap 轮播(Carousel)插件

文章目录 Bootstrap 轮播&#xff08;Carousel&#xff09;插件实例用法选项方法事件 Bootstrap 轮播&#xff08;Carousel&#xff09;插件 Bootstrap 轮播&#xff08;Carousel&#xff09;插件是一种灵活的响应式的向站点添加滑块的方式。除此之外&#xff0c;内容也是足够灵…

ubuntu下畅玩Seer(via wine)

第一步&#xff1a;安装wine 部分exe文件的运行需要32位的指令集架构&#xff0c;需要向Ubuntu系统中添加一个新的架构&#xff08;i386&#xff09;&#xff0c;以支持32位的软件包。因为在64位的Ubuntu系统中&#xff0c;默认情况下只能安装和运行64位的软件。 通过添加i386…

spring boot构建Stomp客户端

目录 一、依赖二、客户端配置三、会话处理程序 ClientStompSessionHandler四、启动 一、依赖 依赖只有一个&#xff0c;版本跟随spring boot版本就行。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web…

MySQL数据库操作篇5(索引的原理及用法)

索引是MySQL中的一大利器&#xff0c;这篇文章旨在讲清楚什么是索引&#xff0c;索引的底层实现原理是什么&#xff0c;使用索引能带来哪些好处&#xff0c;以及索引如何使用较好 此文章会用到前面提到过的一些术语&#xff0c;比如元组&#xff0c;一个元组就指表中的一行数据…

华硕天选air(FX517Z)原装Win11系统带ASUS RECOVERY安装还原方法

华硕天选air(FX517Z)原装Win11系统带ASUS RECOVERY安装还原方法 第一步&#xff1a;下载原装系统工厂包文件&#xff08;6个底包&#xff09;分别为EDN.KIT.HDI.OFS.SWP.TLK 文件地址&#xff1a;https://pan.baidu.com/s/1Pq09oDzmFI6hXVdf8Vqjqw?pwd3fs8 提取码:3fs8 第…

用 LangChain 构建基于资料库的问答机器人(三):ReAct

大家好&#xff0c;我是 Jambo。我们已经学习了如何使用 LangChain 的一些基本功能&#xff0c;解下我们就应该要结合这些功能来做一些复杂的东西了。但在这之前&#xff0c;为了让同学们更好的理解 LangChain 在这其中做了什么&#xff0c;我想先介绍一下关于 GPT 使用方面的一…