P3957 [NOIP2017 普及组] 跳房子
题目背景
NOIP2017 普及组 T4
题目描述
跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一。
跳房子的游戏规则如下:
在地面上确定一个起点,然后在起点右侧画 nn 个格子,这些格子都在同一条直线上。每个格子内有一个数字(整数),表示到达这个 格子能得到的分数。玩家第一次从起点开始向右跳,跳到起点右侧的一个格子内。第二次再从当前位置继续向右跳,依此类推。规则规定:
玩家每次都必须跳到当前位置右侧的一个格子内。玩家可以在任意时刻结束游戏,获得的分数为曾经到达过的格子中的数字之和。
现在小 R 研发了一款弹跳机器人来参加这个游戏。但是这个机器人有一个非常严重的缺陷,它每次向右弹跳的距离只能为固定的 dd。小 R 希望改进他的机器人,如果他花 gg 个金币改进他的机器人,那么他的机器人灵活性就能增加 gg,但是需要注意的是,每 次弹跳的距离至少为 11。具体而言,当 g<dg<d 时,他的机器人每次可以选择向右弹跳的距离为 d-g,d-g+1,d-g+2,\ldots,d+g-1,d+gd−g,d−g+1,d−g+2,…,d+g−1,d+g;否则当 g \geq dg≥d 时,他的机器人每次可以选择向右弹跳的距离为 1,2,3,\ldots,d+g-1,d+g1,2,3,…,d+g−1,d+g。
现在小 R 希望获得至少 kk 分,请问他至少要花多少金币来改造他的机器人。
输入格式
第一行三个正整数 n,d,kn,d,k ,分别表示格子的数目,改进前机器人弹跳的固定距离,以及希望至少获得的分数。相邻两个数 之间用一个空格隔开。
接下来 nn 行,每行两个整数 x_i,s_ixi,si ,分别表示起点到第 ii 个格子的距离以及第 ii 个格子的分数。两个数之间用一个空格隔开。保证 x_ixi 按递增顺序输入。
输出格式
共一行,一个整数,表示至少要花多少金币来改造他的机器人。若无论如何他都无法获得至少 kk 分,输出 -1−1。
输入输出样例
输入 #1复制
7 4 10 2 6 5 -3 10 3 11 -3 13 1 17 6 20 2
输出 #1复制
2
输入 #2复制
7 4 20 2 6 5 -3 10 3 11 -3 13 1 17 6 20 2
输出 #2复制
-1
说明/提示
输入输出样例 1 说明
花费 22 个金币改进后,小 R 的机器人依次选择的向右弹跳的距离分别为 2, 3, 5, 3, 4,32,3,5,3,4,3,先后到达的位置分别为 2, 5, 10, 13, 17, 202,5,10,13,17,20,对应1, 2, 3, 5, 6, 71,2,3,5,6,7 这 66 个格子。这些格子中的数字之和 1515 即为小 R 获得的分数。
输入输出样例 2 说明
由于样例中 77 个格子组合的最大可能数字之和只有 1818,所以无论如何都无法获得 2020 分。
数据规模与约定
本题共 10 组测试数据,每组数据等分。
对于全部的数据满足1 \le n \le 5\times10^51≤n≤5×105,1 \le d \le2\times10^31≤d≤2×103,1 \le x_i, k \le 10^91≤xi,k≤109,|s_i| < 10^5∣si∣<105。
对于第 1, 21,2 组测试数据,保证 n\le 10n≤10。
对于第 3, 4, 53,4,5 组测试数据,保证 n \le 500n≤500。
对于第 6, 7, 86,7,8 组测试数据,保证 d = 1d=1。
/*
Problem : luogu P3957
Algorithm : 二分 + 单调队列dp
Status :
*/
#include <bits/stdc++.h>
#include <cstring>
#include <vector>
#include <algorithm>
#include <cstdio>
#include <iostream>
#define int long long
using namespace std;
typedef long long ll;const int INF = 0x3f3f3f3f3f;
const int MAXN = 1000005;int n,d,k;
int f[MAXN],x[MAXN],s[MAXN];
deque<int> q;bool check(int mi,int mx){memset(f,0,sizeof(f));int p = 0;while(!q.empty())q.pop_back();for(int i = 1;i <= n;i++){while(x[i] >= x[p] + mi){while(!q.empty() && f[p] > f[q.back()])q.pop_back();q.push_back(p);p++;}while(!q.empty() && x[i] > x[q.front()] + mx)q.pop_front();if(q.empty())f[i] = -INF;elsef[i] = f[q.front()] + s[i];if(f[i] >= k)return true;}return false;
}signed main(){//freopen(".in","r",stdin);//freopen(".out","w",stdout);scanf("%lld%lld%lld",&n,&d,&k);for(int i = 1;i <= n;i++)scanf("%lld%lld",&x[i],&s[i]);int l = 0,r = INF,ans = -1;while(l <= r){int mid = (r - l) / 2 + l;if(check(max(1ll,d - mid),d + mid)){r = mid - 1;ans = mid;}elsel = mid + 1;}printf("%lld\n",ans);return 0;
}
相关文章:

P3957 [NOIP2017 普及组] 跳房子
题目背景 NOIP2017 普及组 T4 题目描述 跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一。 跳房子的游戏规则如下: 在地面上确定一个起点,然后在起点右侧画 nn 个格子,这些…...

VR数字工厂多元化展现,打造数字企业工厂名片
5G时代,各种营销都在走数字化的路子,VR数字工厂用VR赋能工厂数字升级,将企业环境、工厂生产、产品研发、质检运输等流程,无死角720度的展示在客户面前,不仅可以提升自身企业的实力,还可以提高客户的信任感。…...

uniapp封装组件,选中后右上角显示对号√样式(通过css实现)
效果: 一、组件封装 1、在项目根目录下创建components文件夹,自定义组件名称,我定义的是xc-button 2、封装组件代码 <template><view class"handle-btn"><view :class"handleIdCode 1 ? select : unSelec…...

华为OD面试(部分)
笔试与性格测验 一面 问题和算法题都挺简单的 二面 Java内存泄漏 算法题思路不对,没写完只说了下思路:Leetcode516. Longest Palindromic Subsequence hr面(资面) 最后告诉我hr面挂了。其实这不是最重要的,因为还…...

从零做软件开发项目系列之一综论软件项目开发
1 引言 有一个三个泥瓦匠的故事。 三个泥瓦匠在砌墙,一个人走过来,问他们在干什么。 第一个泥瓦匠没好气地说,你没看见吗?我在辛苦地砌墙呢。 第二个回答,我们正在建一座高楼。 第三个则洋溢着喜悦说&…...

msvcp110.dll是什么意思,msvcp110.dll丢失的解决方法
装好软件或游戏之后,一打开就跳出各种报错信息的情况小伙伴一定见过,其中缺少各种msvcp110.dll文件最常见。小伙伴们一定奇怪,用得好好的电脑,怎么会缺文件呢?为啥其他游戏/应用就没事呢?其实这些“丢失”的…...

【报错】git push --set-upstream origin XXXX重名
您在尝试将分支推送到远程仓库时遇到了错误。错误信息表明,由于已经存在名为 refs/heads/xingfan/demo 的文件夹,Git 无法创建分支 refs/heads/xingfan。 要解决此问题,您可以尝试重命名本地分支,然后将其推送到远程仓库。以下是…...

探索树算法:C语言实现二叉树与平衡树
探索树算法:C语言实现二叉树与平衡树 树是计算机科学中一个重要且广泛应用的数据结构,它在许多领域都有着重要作用。本篇博客将深入介绍两种常见的树算法:二叉树遍历和平衡二叉树(AVL树),并提供在C语言中的…...

Ubuntu 20.04(服务器版)安装 Anaconda
0、Anaconda介绍 Anaconda是一个开源的Python发行版本,包含了包括Python、Conda、科学计算库等180多个科学包及其依赖项。因此,安装了Anaconda就不用再单独安装CUDA、Python等。 CUDA,在进行深度学习的时候,需要用到GPU…...

IDEA项目实践——JavaWeb简介以及Servlet编程实战
系列文章目录 IDEA项目实践——创建Java项目以及创建Maven项目案例、使用数据库连接池创建项目简介 IDEWA项目实践——mybatis的一些基本原理以及案例 IDEA项目实践——动态SQL、关系映射、注解开发 IDEA项目实践——Spring框架简介,以及IOC注解 IDEA项目实践——Spring当…...

【Freertos基础入门】队列(queue)的使用
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、队列是什么?二、队列的操作二、示例代码总结 前言 本系列基于stm32系列单片机来使用freerots FreeRTOS是一个广泛使用的开源实时操作系统&…...

从零构建深度学习推理框架-8 卷积算子实现
其实这一次课还蛮好理解的: 首先将kernel展平: for (uint32_t g 0; g < groups; g) {std::vector<arma::fmat> kernel_matrix_arr(kernel_count_group);arma::fmat kernel_matrix_c(1, row_len * input_c_group);for (uint32_t k 0; k < k…...

【Spring Boot】JdbcTemplate数据连接模板 — JdbcTemplate入门
JdbcTemplate入门 本节从基础的部分开始介绍什么是JDBC、什么是JdbcTemplate,然后介绍Spring Boot项目如何使用JdbcTemplate操作数据库。 1.JdbcTemplate简介 1.1 什么是JDBC JDBC(Java Data Base Connectivity,Java数据库连接࿰…...

视频汇聚集中存储EasyCVR平台调用iframe地址视频无法播放,该如何解决?
安防监控视频汇聚平台EasyCVR基于云边端一体化架构,具有强大的数据接入、处理及分发能力,可提供视频监控直播、云端录像、视频云存储、视频集中存储、视频存储磁盘阵列、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、AI算法中台智能分析无缝…...

从今天起,重新出发
2017年的时候,我还是一名在校大学生,当时为了准备实习面试写下了第一篇学习笔记。 2018年我开始工作,简单记录了使用 Airflow 的踩坑记录。 一直到今天我已经是一个工作了五年的社畜,但是很遗憾没有把工作中的成长记录下来。 当…...

Java多态详解(1)
多态 多态的概念 所谓多态,通俗地讲,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。 比如: 这一时间爆火的“现代纪录片”中,麦克阿瑟总是对各种“名人”有不同的评价&…...

optee读取Arm系统寄存器的模板
先写一个通用的内联函数模板,然后再通过宏控来定义各种读写函数。 (core/arch/arm/include/arm64.h)/** Templates for register read/write functions based on mrs/msr*/#define DEFINE_REG_READ_FUNC_(reg, type, asmreg) \ sta...

VSCode 使用总结
快捷键 在 Visual Studio Code (VSCode) 中,有许多常用的快捷键可以提高编程效率。以下是一些常见的 VSCode 编程项目快捷键: 编辑器操作: 撤销:Ctrl Z重做:Ctrl Shift Z复制:Ctrl C剪切:C…...

GuLi商城-前端基础Vue-使用Vue脚手架进行模块化开发
自己亲自实践: mac安装webpack webpack 简介Webpack 是一个非常流行的前端构建工具,它可以将多个模块(包括CSS、JavaScript、图片等)打包成一个或多个静态资源文件(bundle),以便用于部署到生产…...

LeetCode450. 删除二叉搜索树中的节点
450. 删除二叉搜索树中的节点 文章目录 [450. 删除二叉搜索树中的节点](https://leetcode.cn/problems/delete-node-in-a-bst/)一、题目二、题解方法一:递归(一种麻烦的方法)方法二:优化后的递归 一、题目 给定一个二叉搜索树的根…...

Java动态调试技术原理及实践
文章目录 Java动态调试技术原理及实践引言故事场景一:开发调试动态调试技术简介Java Instrumentation简介动态调试技术实践案例分析场景二:线上问题排查动态调试技术实践案例分析总结Java动态调试技术原理及实践 引言 在日常的软件开发过程中,调试是一个非常重要的环节。当…...

Lua + Redis 实战代码
--[[luarocks install luasocket module socket not foundhttps://github.com/nrk/redis-lua最历害的是,用redis 去跑lua,分布式锁,限流,]]--local redis require("redis");local config{host"127.0.0.1&…...

类的访问限定符,实例化,对象存储方式,this指针
目录 类的定义 类的两种定义方式: 访问限定符 类的实例化 类对象的存储方式 this指针 C语言结构体中只能定义变量,在C中,结构体内不仅可以定义变量,也可以定义函数。比如: 之前在数据结构初阶中,用C语…...

《Linux从练气到飞升》No.15 Linux 环境变量
🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的…...

Spring Boot 重启命令
Spring Boot 重启命令 本文描述了一个重启Spring Boot命令执行过程和示例 本文利用kill -9 关闭进程,不优雅,会突然中断程序,可能导致数据和逻辑异常 搜索微信小程序【亚特技术】在资源中搜索【优雅】可得到Spring Boot如何优化重启 1. 过…...

pdf怎么合并在一起?这几个合并方法了解一下
pdf怎么合并在一起?在日常工作、学习和生活中,我们常常会遇到需要将多个PDF文件合并成一个文件的情况。比如,在学术论文写作中,我们可能需要将多篇论文合并成一个文件进行打印和提交。在工作中,我们可能需要将多个报告…...

【仿写tomcat】七、项目结构优化以及代码开源
仿写tomcat 项目结构开源地址 项目结构 到目前为止,博主的仿写tomcat就告一段落了,后续有时间了还会继续补充功能,现在的项目结构如下。 在保证功能的前提下作出的改动有: 将各个类中的参数统一成了Config类,通过对…...

泛微E8配置自定义触发流程失败
在新公司接了个配置泛微流程触发的活。因为泛微的官方文档并没有详细的操作指引,在测试环境配置之后、要触发的流程可以手工提交,但是触发一直不成功。简单记录下业务场景和其他处理信息,以供参考。 应用版本 目前使用了泛微 E8 ࿰…...

Springboot整合Mybatis调用Oracle存储过程
1、配置说明 Oracel11g+springboot2.7.14+mybatis3.5.13 目标:springboot整合mybatis访问oracle中的存储过程,存储过程返回游标信息。 mybatis调用oracle中的存储过程方式 2、工程结构 3、具体实现 3.1、在Oracle中创建测试数据库表 具体数据可自行添加 create table s…...

【java安全】Log4j反序列化漏洞
文章目录 【java安全】Log4j反序列化漏洞关于Apache Log4j漏洞成因CVE-2017-5645漏洞版本复现环境漏洞复现漏洞分析 CVE-2019-17571漏洞版本漏洞复现漏洞分析 参考 【java安全】Log4j反序列化漏洞 关于Apache Log4j Log4j是Apache的开源项目,可以实现对System.out…...