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/)一、题目二、题解方法一:递归(一种麻烦的方法)方法二:优化后的递归 一、题目 给定一个二叉搜索树的根…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
云原生安全实战:API网关Envoy的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关 作为微服务架构的统一入口,负责路由转发、安全控制、流量管理等核心功能。 2. Envoy 由Lyft开源的高性能云原生…...
【java】【服务器】线程上下文丢失 是指什么
目录 ■前言 ■正文开始 线程上下文的核心组成部分 为什么会出现上下文丢失? 直观示例说明 为什么上下文如此重要? 解决上下文丢失的关键 总结 ■如果我想在servlet中使用线程,代码应该如何实现 推荐方案:使用 ManagedE…...
