当前位置: 首页 > news >正文

[POI2014] PTA-Little Bird(单调队列优化 DP)

luogu 传送门icon-default.png?t=O83Ahttps://www.luogu.com.cn/problem/P3572

解题思路

先设 f(i) 表示到 i 的最小劳累值。

很容易得出转移:

f(i)=\min(f(j)/f(j)+1)

其中 f(j)/f(j)+1 由 d_i 和 d_{j} 的大小关系决定,并且 i-k\leq j <i

很显然,直接暴力是 O(n^2) 的,会超时

于是,考虑优化。

我们发现 j 是有一定的取值范围,并且我们取的是这个区间内的最小值。

也许这可以用单调队列优化

判断对头是否在范围内,如果不在即出队;

入队的时候,考虑队尾的劳累值是否大于当前的劳累值,如果大于,则队尾出队,如果队尾的劳累值等于当前的劳累值,我们可以比较谁的高度更高,保留更高的(因为更高的对后面的情况更优)。

于是,时间复杂度降为 O(nq)

代码

#include<bits/stdc++.h>
using namespace std;int n;
int d[1000001];
int qi;
int ki;
int f[1000001];
int q[1000001];
int head,tail;
int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n;for(int i=1;i<=n;i++){cin>>d[i];}cin>>qi;while(qi--){cin>>ki;head=1,tail=0;f[1]=0;q[++tail]=1;for(int i=2;i<=n;i++){while(head<=tail&&q[head]<i-ki)head++;if(d[i]>=d[q[head]])f[i]=f[q[head]]+1;elsef[i]=f[q[head]];while(head<=tail&&(f[q[tail]]>f[i]||(f[q[tail]]==f[i]&&d[q[tail]]<=d[i])))tail--;q[++tail]=i;} cout<<f[n]<<endl;}return 0;
}

相关文章:

[POI2014] PTA-Little Bird(单调队列优化 DP)

luogu 传送门https://www.luogu.com.cn/problem/P3572 解题思路 先设 表示到 的最小劳累值。 很容易得出转移&#xff1a; 其中 由 和 的大小关系决定&#xff0c;并且 。 很显然&#xff0c;直接暴力是 的&#xff0c;会超时。 于是&#xff0c;考虑优化。 我们发现…...

【含开题报告+文档+PPT+源码】基于SpringBoot的体育馆管理系统的设计与实现

开题报告 近年来&#xff0c;随着人们生活水平的提高和健康意识的增强&#xff0c;体育馆作为提供体育锻和休闲娱乐的重要场所&#xff0c;其使用频率和管理难度也在不断增加。传统的体育馆管理模式通常依赖于人工记录和手动操作&#xff0c;不仅效率低下&#xff0c;而且容易…...

Vue3学习:vue组件中的图片路径问题

今天在做一个案例的时候&#xff0c;图片放在assets/images文件夹下&#xff0c;如下路径&#xff0c;其中的图片不能正常显示。 list: [{ id: 1, name: 欧拉公式啤酒杯, price: 30.00, src: ./assets/images/Euler.png},{ id: 2, name: 高斯分布马克杯, price: 40.00, src: ./…...

openCV基础-图像预处理Day26

图像预处理 ​ 在计算机视觉和图像处理领域&#xff0c;图像预处理是一个重要的步骤&#xff0c;它能够提高后续处理&#xff08;如特征提取、目标检测等&#xff09;的准确性和效率。OpenCV 提供了许多图像预处理的函数和方法&#xff0c;以下是一些常见的图像预处理操作&…...

给文件添加可读可写可执行权限

在Unix、Linux或类Unix操作系统中&#xff0c;你可以使用chmod命令来给文件添加可读、可写和可执行权限。权限通常分为三组&#xff1a;文件所有者&#xff08;owner&#xff09;、文件所属组&#xff08;group&#xff09;和其他用户&#xff08;others&#xff09;。每组都可…...

golang有序map

最近使用go开发排行榜的需求, 有些情况会用到有序map, 但是go竟然没有有序map的实现 本着自己动手丰衣足食的原则, 就自己实现了一个 原理 原理比较简单, 主要结合了container/list双向链表和map 使用双向链表存储key和value, 保证顺序, 使用map存储key和节点信息, 保证查找…...

【LangChain系列4】【Chain模块详解】

目录 前言一、LangChain1-1、介绍1-2、LangChain抽象出来的核心模块1-3、特点1-4、langchain解决的一些行业痛点1-5、安装 二、Chain模块2-1、介绍2-2、LLMChain2-3、Sequential Chain&#xff08;顺序链&#xff09;2-4、Router Chain 总结 前言 LangChain给自身的定位是&…...

51c嵌入式~IO合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/12383193 一、单片机通信数据接收解析方法 前阵子一朋友使用单片机与某外设进行通信时&#xff0c;外设返回的是一堆格式如下的数据&#xff1a; AA AA 04 80 02 00 02 7B AA AA 04 80 02 00 08 75 AA AA 04 80 02 00 9B E2…...

ETLCloud怎么样?深度解析其在数据管理中的表现

在BI或数据大屏等数据分析工具中&#xff0c;经常需要从多个业务系统中提取原始数据&#xff0c;然后对数据进行清洗、处理&#xff0c;以获取高质量、有效且干净的数据以供后续的BI进行数据统计和分析使用&#xff0c;从高质量的实现企业数据的价值变现。 然而&#xff0c;在…...

高频谐振功放电路

目录 集电极馈电电路 高频扼流圈的作用: 并联馈电回路 高频扼流圈作用 : 优缺点 对于并联的集电极馈电网络: 对于串联的集电极馈电网络: 神奇之处 基级馈电电路 自反偏压: 复合输出回路 天线回路 效率分析 总效率分析 互感如何改变工作状态 集电极馈电电路 馈电电路分…...

kafka如何获取 topic 主题的列表?

大家好&#xff0c;我是锋哥。今天分享关于【kafka如何获取 topic 主题的列表&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; kafka如何获取 topic 主题的列表&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Kafka中&#xff0c;可以…...

全新大模型框架Haystack,搭建RAG pipeline

大家好&#xff0c;在AI应用开发的赛道上&#xff0c;目前Haystack以其开源框架的优势&#xff0c;成为LLM技术领域的一匹黑马&#xff0c;对现有竞争者构成挑战。本文将介绍Haystack的亮点优势&#xff0c;并分析它为何能在众多LLM框架中脱颖而出&#xff0c;通过RAG应用实例来…...

儿童孤独症专家分享:了解治疗与支持的专业帮助

在儿童的成长旅程中&#xff0c;每一步都充满了探索与发现。然而&#xff0c;对于患有孤独症的儿童来说&#xff0c;这段旅程往往伴随着更多的挑战与困难。孤独症&#xff0c;这个看似遥远的词汇&#xff0c;却深刻地影响着无数家庭的生活。作为儿童孤独症领域的专家&#xff0…...

初始JavaEE篇——多线程(7):定时器、CAS

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaEE 目录 定时器的使用 定时器的原理 模拟实现定时器 CAS 介绍 CAS的应用场景 解析 AtomicInteger 类 实现自旋锁 CAS的缺陷…...

高精度计算(乘)

引言 此篇是专栏信息学杂谈第八篇高精度计算&#xff08;乘&#xff09;&#xff0c;展示了关于C如何实现高精度乘法的代码 正文&#xff1a; 乘法进位 c[i j - 1] a[i] * b[j] x; //x为之前进位 x c[i j - 1] / 10; c[i j - 1] % 10;完整代码&#xff1a; #include …...

在vue中 如何实现跨域

跨域问题是Web开发中常见的挑战&#xff0c;那么如何解决跨域呢&#xff0c;我们一起来看看吧&#xff01; 跨域是什么&#xff1f; 跨域&#xff08;Cross-Origin&#xff09;是指网络请求从一个域名&#xff08;origin&#xff09;发起&#xff0c;而请求的目标资源位于另一…...

计算机考研,选择西安交通大学还是哈工大?

C哥专业提供——计软考研院校选择分析专业课备考指南规划 经过全面分析&#xff0c;2025年考研西安交通大学和哈尔滨工业大学计算机专业的报考难度对比如下&#xff1a; 西安交通大学计算机专业 > 哈尔滨工业大学计算机专业 对于想要报考985高校计算机专业但核心目标是优…...

微积分复习笔记 Calculus Volume 1 - 4.4 The Mean Value Theorem

4.4 The Mean Value Theorem - Calculus Volume 1 | OpenStax...

Cpp多态机制的深入理解(20)

文章目录 前言一、多态的概念二、多态的定义与实现两个必要条件虚函数虚函数的重写重写的三个例外override 和 final重载、重写(覆盖)、重定义(隐藏) 三、抽象类概念接口继承和实现继承 四、多态的原理虚表和虚表指针虚函数调用过程动态绑定与静态绑定 五、那...那单继承甚至多…...

(六)Python结构数据类型

一、集合类型&#xff08;Sets&#xff09; Sets&#xff08;集合&#xff09;是一个无序不重复的元素集。主要功能是自动清除重复的元素。创建集合时使用大括号{}包含其中元素。 Food{西瓜,南瓜,冬瓜,北瓜} print(Food) 输出结果&#xff1a; 增加重复元素&#xff0c;则会…...

C++进阶-->多态(Polymorphism)

1. 多态的概念 多态&#xff0c;顾名思义多种形态&#xff1b;多态分为编译时多态&#xff08;静态多态&#xff09;和运行时多态&#xff08;动态多态&#xff09;&#xff0c;静态多态就是就是我们前面讲的函数重载和函数模板&#xff0c;可以通过传不同类型&#xff0c;然后…...

python实战项目51:selenium结合requests获取某众点评评论

python实战项目51:selenium结合requests获取某众点评评论 一、selenium获取cookies二、利用requests发送请求三、注意事项四、完整代码一、selenium获取cookies 首先,初始化selenium的webdriver,然后使用webdriver打开某众点评主页,之后手动扫码登录,利用selenium的get_c…...

面试准备第一版ssm spring-springmvc

请写出spring中常用的依赖注入方法&#xff1a; 1、setter 2、构造方法注入 3、字段注入 Setter 注入&#xff1a; 通过公共的 setter 方法进行依赖注入。优点&#xff1a;可选依赖&#xff0c;能更清晰地看到依赖关系。缺点&#xff1a;依赖在构造时不可用&#xff0c;可能导…...

Ubuntu学习笔记 - Day1

文章目录 学习目标&#xff1a;学习内容&#xff1a;学习笔记&#xff1a;Linux简介基于Linux内核的系统 Ubuntu简介GNU简介 远程连接Ubuntu查看Ubuntu的IP地址Mac连接Ubuntu此时可能显示报错&#xff0c;连接被拒绝解决办法连接成功连接退出 学习目标&#xff1a; 一周掌握 Li…...

挑战Java面试题复习第4天,坚持就是胜利

挑战第 4 天 Excption与Error包结构OOM 知识点SOF 知识点线程程序进程知识点有些字段不想序列化&#xff0c;怎么办&#xff1f;说说 IO 流Java IO与 NIO的区别 Excption与Error包结构 运行时异常&#xff08;RuntimeException&#xff09;&#xff1a; 包括RuntimeException…...

Android 虚拟化框架(AVF)指南

Android 虚拟化框架&#xff08;AVF&#xff09;指南 一、项目介绍二、项目特色三、如何使用AVF四、总结 随着移动设备的普及和应用场景的多样化&#xff0c;安全性和隐私保护成为了移动操作系统的重要课题。Android作为全球最广泛使用的移动操作系统之一&#xff0c;一直在不断…...

day-77 超级饮料的最大强化能量

思路 动态规划&#xff1a;因为每一步要么选A&#xff0c;要么选B&#xff0c;所以问题可以转换为求最后一步从A选或从B选中的较大值 解题过程 定义而二维数组dp,dp[i][0]表示最后一步从A取能获得的最大能量&#xff0c;dp[i][1]表示最后一步从B取能获得的最大能量状态转换方程…...

有道小P 1.0.8 | 完全免费的AI全科学习助手,家长的好帮手

有道小P是一款由网易有道出品的完全免费的AI全科学习助手&#xff0c;专为中小学生设计。它支持多种输入方式&#xff0c;包括文字、语音和拍照识别&#xff0c;能够覆盖十个科目的所有题型&#xff0c;提供详细的解析和逐步解答&#xff0c;帮助孩子们理解和吸收知识。此外&am…...

vue项目中如何在路由变化时增加一个进度条

在 Vue.js 项目中&#xff0c;使用路由&#xff08;如 Vue Router&#xff09;时&#xff0c;为了提升用户体验&#xff0c;你可能会想要在路由变化时显示一个进度条。这可以通过多种方式实现&#xff0c;其中一种流行的做法是使用第三方库&#xff0c;如 vue-loading-bar 或 n…...

如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令以及Vscode中的环境路径配置中找不到gcc

配置环境变量教程很多&#xff0c;就不多说&#xff0c;说下耗费一小时解决的问题&#xff1a;mingw64安装后配置完环境变量仍然执行不了gcc命令 配置 了N次了&#xff0c;都还是在终端找不到指令&#xff0c;然后&#xff0c;将路径放到第一个&#xff0c;然后再看下&#xf…...