【NOIP2017】【洛谷P3957】跳房子【单调队列优化dp】

GD32主程序跑飞?可能是BOOT0引脚惹的祸(附J-LINK调试实录) 本文针对GD32微控制器程序下载后无法运行的典型问题,深入剖析了BOOT0引脚配置对启动模式的关键影响。通过结合J-LINK调试器与KEIL MDK环境,详细演示了如何从程序跑飞现象(如PC指向0x1FFF Fxxx)定位到硬件层面的BOOT0引脚与VDD短路故障,并提供了系统的硬件排查步骤与设计预防建议。 阅读详情

题目大意:

题目链接:https://www.luogu.org/problemnew/show/P3957
跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一。
跳房子的游戏规则如下:
在地面上确定一个起点,然后在起点右侧画 n n n个格子,这些格子都在同一条直线上。每个格子内有一个数字(整数),表示到达这个 格子能得到的分数。玩家第一次从起点开始向右跳,跳到起点右侧的一个格子内。第二次再从当前位置继续向右跳,依此类推。规则规定:
玩家每次都必须跳到当前位置右侧的一个格子内。玩家可以在任意时刻结束游戏,获得的分数为曾经到达过的格子中的数字之和。
现在小 RR 研发了一款弹跳机器人来参加这个游戏。但是这个机器人有一个非常严重的缺陷,它每次向右弹跳的距离只能为固定的 d d d。小 R R R希望改进他的机器人,如果他花 g g g个金币改进他的机器人,那么他的机器人灵活性就能增加 g g g,但是需要注意的是,每 次弹跳的距离至少为1。具体而言,当 g &lt; d g&lt;d g<d时,他的机器人每次可以选择向右弹跳的距离为 d − g , d − g + 1 , d − g + 2 , ⋅ ⋅ ⋅ , d + g − 2 , d + g − 1 , , d + g d-g,d-g+1,d-g+2,···,d+g-2,d+g-1,,d+g d−g,d−g+1,d−g+2,⋅⋅⋅,d+g−2,d+g−1,,d+g ;否则(当 g ≥ d g \geq d g≥d时),他的机器人每次可以选择向右弹跳的距离为 1 , 2 , 3 , ⋅ ⋅ ⋅ , d + g − 2 , d + g − 1 , d + g 1,2,3,···,d+g-2,d+g-1,d+g 1,2,3,⋅⋅⋅,d+g−2,d+g−1,d+g 。
现在小R 希 望 获 得 至 少 希望获得至少 希望获得至少k$分,请问他至少要花多少金币来改造他的机器人。


思路:

都咕了1年了才来做这道题。
当时是打了一个爆搜吧。反正只拿了10 p t s pts pts。
现在一看显然是单调队列优化 d p dp dp。
由于花费满足单调性,所以可以考虑二分花费。
对于任何一个花费,进行一次 d p dp dp。
设 f [ i ] f[i] f[i]表示跳到点 i i i的最大得分。可以用单调队列来维护前面所有合法的位置的编号,然后每次取最大的转移。
现在看来还是很显然的吧。不多解释了。
注意要开 l o n g   l o n g long\ long long long,时间复杂度 O ( n   l o g   n ) O(n\ log\ n) O(n log n)


代码:

#include <cstdio>
#include <queue>
#include <cstring>
using namespace std;
typedef long long ll;

const int N=500010;
int n,m,s,l,r=N,mid,a[N],dis[N],tot;
ll f[N],maxn;

bool dp(int k)
{
	int L=m-k,R=m+k;
	memset(f,0xcf,sizeof(f));
	f[0]=0;
	deque<int> q;
	tot=0;
	maxn=-1e16;
	for (int i=1;i<=n;i++)
	{
		while (q.size()&&dis[i]-dis[q.front()]>R) q.pop_front();  //保证队列中的点一定可以调到现在枚举的点
		while (dis[i]-dis[tot]>R&&i>tot) tot++;
		while (dis[i]-dis[tot]>=L&&i>tot)  //保证单调
		{
			while (q.size()&&f[q.back()]<f[tot]) q.pop_back();
			q.push_back(tot);
			tot++;
		}
		if (q.size()) f[i]=f[q.front()]+(ll)a[i];  //转移
		if (f[i]>maxn) maxn=f[i];
	}
	return maxn>=(ll)s;
}

int main()
{
	scanf("%d%d%d",&n,&m,&s);
	for (int i=1;i<=n;i++)
		scanf("%d%d",&dis[i],&a[i]);
	while (l<=r)
	{
		mid=(l+r)/2;
		if (dp(mid)) r=mid-1;
			else l=mid+1;
	}
	if (l>500000) printf("-1");
		else printf("%d",r+1);
	return 0;
}
避坑指南:GROMACS模拟中.tpr、.xtc、.edr、.cpt文件你用对了吗?从生成到分析全流程解析 本文详细解析GROMACS分子动力学模拟中.tpr、.xtc、.edr、.cpt等核心文件的使用技巧,从文件生成到轨迹优化、能量分析的全流程避坑指南。重点介绍拓扑文件校验、轨迹格式选择、周期性边界处理等实战经验,帮助科研人员高效管理模拟数据并准确提取关键能量信息。 阅读详情

相关推荐

c#笔记之mes上传Http协议版

HTTP(超文本传输协议) 是一种典型的协议。

qq_61441787的博客 343

【2017NOIP普及组】T4 跳房子

P3957 跳房子 题目传送门 思路: 对于题目所需求的g,因为要求最小,其实就是个二分查找的过程。然后对于g,我们每次都要做判断。 每次判断g的值是否能得到k分。过程其实可以理解为伪背包,意思是:对于一个点,在它前面的点如果能跳到它,那么就更新f[i],记得要取MAX,因为有负数。 bool check(long long g) { memset(f,-127,sizeof(f)); lon...

蒟蒻こんにゃく 557

红外与可见光融合避坑指南:LLVIP数据集实测6大算法效果对比

本文基于专为弱光视觉设计的LLVIP数据集,对GTF、DenseFuse、FusionGAN、IFCNN等6种主流红外与可见光图像融合算法进行了深度实测与对比。通过客观指标与可视化分析,揭示了算法在极端弱光下易出现特征丢失的共性问题,并探讨了融合图像对下游目标检测任务的实际增益,为工程选型与算法调优提供了实用指南。

weixin_29092031的博客 439

【动态规划 进阶】单调队列优化dp 学习总结

单调队列的基本特点、应用题目分析、以及针对每种特性 点对点的分析!

weixin_51307520的博客 574

海思Hi3519AV100 sensor移植实战:IMX586驱动调试与硬件验证全流程

本文详细解析了在海思Hi3519AV100平台上移植索尼IMX586传感器的全流程实战。内容涵盖从硬件I2C通信验证、驱动代码移植与修改,到内核配置、时钟设定,以及使用示波器进行硬件信号深度验证和ISP图像调优等关键步骤,为开发者提供了一套清晰、可复现的sensor移植与调试方法。

weixin_29168393的博客 395

基于深度学习的茶叶等级检测识别系统:YOLOv8 + UI界面 + 数据集完整实现

随着深度学习技术的不断进步,基于计算机视觉的茶叶等级检测系统可以大大提高检测效率,提供客观一致的评估标准。本系统将利用YOLOv8进行茶叶等级的检测与识别,通过图形用户界面(UI)实现与用户的交互,提供茶叶等级分类的实时反馈。本文将详细介绍如何使用YOLOv8结合UI界面,建立一个完整的茶叶等级检测与识别系统,包括数据集的准备、模型的训练、UI的设计及完整的代码实现。本系统的目标是通过深度学习技术,结合YOLOv8模型和图形用户界面(UI),实现对茶叶等级的自动化检测与识别。

YOLO 972

ACM算法总结 动态规划(二)(dp优化)

目录线段树优化dp单调队列优化dp分治优化dp斜率优化dp 线段树优化dp 当递推的时候,整个区间的变化都是一样的,就可以考虑用线段树加速dp递推。 单调队列优化dp 对于某一个 i 进行 dp 时,其左边的最优决策点假如是 j,如果 j 随着 i 的增长是单调递增的,那么可以用单调队列优化:队首是最优决策点,然后每次把不符合条件的队首弹出,把更劣的队尾弹出,然后把当前决策点加入队尾。这样保证每个点入队一次出队一次,复杂度为 O(n)O(n)O(n) 。 比如对于这道题 烽火传递 : 有 n

dragonylee的博客 574

DP的各种优化(动态规划,决策单调性,斜率优化,带权二分,单调栈,单调队列)...

前缀和优化 当DP过程中需要反复从一个求和式转移的话,可以先把它预处理一下。运算一般都要满足可减性。 比较naive就不展开了。 题目 【Todo】洛谷P2513 [HAOI2009]逆序对数列 【Done】洛谷P2511 [HAOI2008]木棍分割 【Done】洛谷P4099 [HEOI2013]SAO 【Done】NOIAC37 染色 单调队列优化 前置技能:单调队列(经典的问题模...

a83229442的博客 638

【数据集】中国各类水文专业常用数据集合集

对中国各类水文专业常用数据集进行整理并总结

WW、forever的博客 9301

Vue - 萤石云监控 ezuikit 视频实例销毁方案,解决使用stop方法无法销毁EZUIKit实例或销毁后依然占用内存并且监控画面依然有声音问题(解决页面多个监控摄像头画面同时播放,翻页或关闭页

vue2,vue3,萤石,监控摄像头,萤石云销毁视频实例,退出页面销毁,stop销毁原视频流,占用内存怎么办,销毁后视频依旧在后台播放有声音,销毁视频播放器,页面上有多个视频画面怎么销毁某一个,stop方法不生效怎么办,浏览器非常卡,dom销毁,ezuikit-js萤石云播放器Vue中使用beforeDestory销毁播放器实例,调用萤石云ezuikit-js的视频对象销毁,vue使用萤石云监控视频录像回放,不销毁实例会出现离开页面后依旧有监控声音并且占内存问题,不好使,页面崩了,崩溃,视频监控太多,没有用

🏆 前端领域优质创作者 1万+

[动态规划]单调队列优化DP

单调队列优化DP问题

天道酬勤,厚积薄发 400

热力学仿真软件:COMSOL Heat Transfer_(18).案例研究:工业加热炉优化

工业加热炉的优化设计和操作参数调整是提高制造过程效率和产品质量的关键。通过仿真软件如COMSOL Multiphysics,可以精确地分析炉内的温度分布、能耗和热损失,从而提出有效的优化方案。本文通过一个实际应用案例,展示了如何利用仿真技术进行工业加热炉的综合优化,并通过实验验证了优化方案的有效性。希望这些方法和案例可以为其他制造企业提供参考,帮助他们在实际生产中提高加热炉的性能和效率。

kkchenjj的博客 1008

(单调队列优化)SMOJ 松果/洛谷 P3957 NOIP2017普及 跳房子 题解

有n棵松果树从左往右排一行,松鼠桃桃现在在第一棵松果树上。它想通过跳跃,从一棵树跳到另一棵树上,从而吃完一棵树上所有的松果。第i棵树上有松果ai​个,与起点0距离为bi​。松鼠的体力有个上限,每次不能跳的太远,最远距离为d,也不能跳太多次,最多跳m次。它最多能吃到多少个松果?

m0_60506105的博客 1102

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【训练题28:二分+单调队列】[NOIP2017 普及组] 跳房子 | 洛谷 P3957

[NOIP2017 普及组] 跳房子 | P3957 难度 提高+/省选−\color{cyan}提高+/省选-提高+/省选− −8.02k48.38k-\frac{8.02k}{48.38k}−48.38k8.02k​ 题意 首先给你一个 xxx 坐标轴,开始在原点,正方向处给定 nnn 个点。 给定这每个点的坐标 posipos_iposi​ 以及每个点的收益 scoisco_iscoi​ (可正可负) 给你一个弹跳力 ddd 。一开始每次跳跃只能向右移动 ddd 个单位。 你花 ggg 块钱,使得弹

溢流眼泪的博客 388

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

洛谷 P3957 跳房子

题目链接 分析: 我们发现,当我们花费a枚金币对机器人进行改造时,若能拿到最大数字和z,那么显然当我们花费b(b>a) 枚金币也必然能得到数字和z甚至更大,至少采用和花费a时相同的走法就能保证最大数字和不会降低。 所以我们决定采用二分的算法,理论上二分的上限为xi的大小,即109,但由于数据过水(虽然没给出)保证了相邻两点相距不超过1000,故设二分上限为1000即可,二分下限显然为0。 最大数字和=F(花费金币)这个函数不递减,所以我们可以采用二分法来查找最小花费金币数。 剩下的问题就是如何计算在

weixin_49821971的博客 268

【NOIP2017】洛谷3957 跳房子题解(二分+DP+单调队列)

题目:luogu3957. 题目大意:现在给定一串序列aaa,a[i]a[i]a[i]表示第iii个元素的值.现在给定一个值ddd,表示当使用ggg枚金币时,可以每次向右移动g−xg-xg−x~g+xg+xg+x格(具体看题目),现在问你最少要用多少金币才能使跳到的格子的元素和至少为kkk,若无解输出−1-1−1. 这道题我们先来考虑无解的情况,若所有正数元素和都没有kkk大,则输出−1-1−1....

hzk_cpp的博客 525

P3957 [NOIP2017 普及组] 跳房子(青春版代码)

一个答案合法 当且仅当 l

2301_77025310的博客 400

洛谷P3957 跳房子(Noip2017普及组 T4)

今天我们的考试就考到了这道题,在考场上就压根没有思路,我知道它是一道dp的题,但因为太弱还是写不出来。 下来评讲的时候知道了一些思路,是dp加上二分查找的方式,还能够用单调队列优化。 但看了网上的许多代码和博客都觉得不太明白单调队列的应用,看来真的还是太菜了。 单调队列掌握不熟练(其实什么也不知道了,虽然之前是讲过的) 那就换一种思路,不用单调队列,二分+dp其实就能搞出来。 怎么能看出...

weixin_34174105的博客 250

[题] 跳房子 #dp #二分答案

花g个金币可以升级机器人,使其跳跃距离范围向上向下增加g。更多的金币会有更高的分数,所以向右二分答案。花最少的金币,获得分数k。

仅仅是笔记。 242

NOIP2017复赛普及组题解

--原题见洛谷P3954 - P3957 T1成绩 一看就是 A * 0.2 + B * 0.3 + C * 0.5 . 复杂度O (1). T2 图书管理员 我们可以发现,输入数据给定了需求码的位数,所以我们可以预处理出10的1-9次幂, 然后在每次询问中我们可以把图数码 % ( 10^k ) 其中k为需求码的位数. 复杂度 O(nq). T3...

weixin_30847939的博客 328

Day1讲题题单

Day1讲题题单

Demilly123的博客 1038

P3957 [NOIP2017 普及组] 跳房子

具体而言,当 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。花费 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 个格子。

2301_76723927的博客 469

线性DP例题(洛谷P5858 Golden Sword)及其单调队列优化

题目描述 制造一把金宝剑需要 n 种原料,编号为 1 到 n,编号为 i 的原料的坚固值ai。 炼金是很讲究放入原料的顺序的,因此小 E 必须按照 1 到 n 的顺序依次将这些原料放 入炼金锅。 但是,炼金锅的容量非常有限,它最多只能容纳 w 个原料。 所幸的是,每放入一个原料之前,小 E 可以从中取出一些原料,数量不能超过 s 个。 我们定义第 i 种原料的耐久度为:放入第 i 种原料时锅内的原料总数(包括正在放入的原料)× ai,则宝剑的耐久度为所有原料的耐久度之和。 小 E 当然想让他的宝剑的耐久度尽

Salvator_的博客 1595

[USACO18JAN]Lifeguards P 洛谷黑题,单调队列优化DP

传送门:戳我 这道题有两个版本,S和P,S是K等于1的情况,显然可以用线段树水过。 P版本就难了很多,洛谷黑题(NOI/NOI+/CTSC),嘿嘿。 我自己也不是很理解,照着题解写了一遍,然后悟到了一点东西。 dp方程很好想: dp[i][j]表示处理到第i个元素,已经删掉了j个,但取了第i个。 dp[i][j]=max(dp[k][j-i-k-1])。表示考虑上一个取的区间是k,然后...

weixin_30610755的博客 503
上一篇: 【POJ1185】【洛谷P2704】炮兵阵地【状压dp】
下一篇: 【洛谷P1896】互不侵犯【状压dp】
stoorz1023
博客等级 码龄9年 101粉丝 595原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值