-
B - Assignment
- HDU - 5289
- 题意:给出一个数列,问其中存在多少连续子序列,子序列的最大值-最小值<m。
- 思路:枚举终点,尺取起点O(1)rmq倍增查询
-
#include<iostream> #include<cstring> #include<cmath> #include<stdio.h> using namespace std; #define maxn 200000 #define maxm 30 #define ll long long int dpmin[maxn][maxm]; int dpmax[maxn][maxm]; int a[maxn],n,q,m,k,t; void rmqinit() { for(int j=1; (1<<j)<=n; j++) for(int i=1; i+(1<<j)<n+2; i++) { dpmin[i][j]=min(dpmin[i][j-1],dpmin[i+(1<<(j-1))][j-1]); dpmax[i][j]=max(dpmax[i][j-1],dpmax[i+(1<<(j-1))][j-1]); } } int rmqmin(int l,int r) { int k=log(r-l+1)/log(2); return min(dpmin[l][k],dpmin[r-(1<<k)+1][k]); } int rmqmax(int l,int r) { int k=log(r-l+1)/log(2); return max(dpmax[l][k],dpmax[r-(1<<k)+1][k]); } int main() { scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(int i=1; i<=n; i++) { scanf("%d",&a[i]); dpmin[i][0]=dpmax[i][0]=a[i]; } rmqinit(); ll ans=0; k=1; for(int i=1; i<=n; i++) { while(rmqmax(k,i)-rmqmin(k,i)>=m&&k<i)k++; ans+=(i-k+1); } printf("%lld\n",ans); } return 0; }
相关推荐
Conda报错急救指南:遇到Malformed version string ‘~‘怎么办?(附最新解决方案)
本文深度解析Conda报错`Malformed version string '~'`的根源与解决方案。该错误通常由版本字符串解析异常或Conda版本过旧引起。文章提供了从清理缓存、针对性升级到环境重建的完整修复流程,并强调了升级Conda至最新版本是解决此类`CondaValueError`问题的根本方法,帮助开发者高效恢复工作环境。
B - Assignment HDU - 5289
Assignment Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 4187 Accepted Submission(s): 1927 Problem Description Tom owns a company
Quartus原理图设计入门:从半加器到4位全加器的保姆级教程
本文提供Quartus原理图设计入门教程,详细讲解从半加器到4位全加器的实现过程。通过原理图输入法,逐步构建数字电路设计基础模块,涵盖环境搭建、逻辑设计、层次化实现及功能验证等关键步骤,帮助FPGA初学者快速掌握Quartus工具链和加法器设计方法。
HDU 5289-B - Assignment-贪心
题意要求选出 连续区间且区间内的最大最小值之差小于k 的区间个数, 用贪心,枚举左端点,从a[1]开始,接下来如果a[2]、a[3]合法,就放到set里,每次放之前与set的最大最小值比较,直到无法放入为止,然后计算当前set的size,即为a[1]为左端点所有符合条件的区间个数,然后就丢弃a【1】,以a[2]为左端点继续放元素进去set,之前计算a[1]的时候放进去set的元素,必然也对于a
基于 STM32 与压电薄膜的婴儿睡眠呼吸暂停监测床垫设计
本设计以 STM32F103C8T6 为主控,结合 PVDF 压电薄膜传感器,通过模拟信号调理与数字峰值检测算法,实现了对婴儿睡眠呼吸状态的实时监测。系统结构简单、成本低廉、无接触无束缚,当检测到 20 秒以上无呼吸信号时自动触发声光报警,可有效降低婴儿睡眠呼吸暂停带来的安全风险。后续可扩展蓝牙 / WiFi 模块,将报警信息推送至家长手机端,实现远程监护。
【PCIe 总线及设备入门学习专栏 6.1 -- PCIe MCTP】
MCTP 是由 DMTF(Distributed Management Task Force)定义的协议,用于提供设备和主机间基于不同传输层(如 PCIe、I²C、USB 等)的管理消息通信能力。在 PCIe 环境下,MCTP 消息作为的一种特殊形式传输,并被赋予唯一的 VDM Code 值0000b,以区别于其他 VDM。MCTP 在 PCIe 环境中作为一种基于 Type 1 VDM 的管理通信协议,提供了设备与主机之间的灵活数据传输能力。
解题报告 之 HDU5289 Assignment
解题报告 之 HDU5289 Assignment Description Tom owns a company and he is the boss. There are n staffs which are numbered from 1 to n in this company, and every staff has a ability. Now, Tom is going to assign a special task to some staffs who were in the same g
绘制Winform动态折线图,LiveCharts如何打造数据可视化神器?
在C# Winform应用程序中,使用LiveCharts库来创建动态、美观的折线图不仅能够提升用户体验,还能直观展示数据趋势。下面,我们将通过一个详尽的示例,展示如何在Winform项目中集成LiveCharts并绘制折线图。:在Visual Studio中,选择“文件” > “新建” > “项目”,然后选择“Windows Forms 应用(.NET)”模板。LiveCharts的强大之处在于其高度的可定制性,你可以根据需求调整颜色、动画效果、交互方式等,让图表更加符合你的应用需求。
hdu-5289
题目:点击打开链接 题意:给出一个数列,问其中存在多少连续子序列,子序列的最大值-最小值< k 。 分析: 解法一:二分+RMQ,枚举左端点,RMQ预处理(st表),二分找到每个左端点满足条件的右界。 解法二:单调队列,维护两个单调队列,一个单调递增,一个单调递减,双指针,第一个第二个指针初始指向第一个数据,第一个指针按顺序不断向队尾添加数据,当最大值最小值的差大于等于k后,就意味着新添...
【归因】MATLAB实现最佳指纹法(待更新)
简述用于归因分析的最佳指纹法,及其MATLAB实现。
瑞芯微RV1109平台GT911触摸屏驱动调试记录1
很明显这里可以看到系统已经配置了i2c-0、i2c-1、i2c-3、i2c-4、i2c-5,当开机的时候系统已经将相应的I2C节点注册成功了,说明I2C部分是没有问题的。
[多校2015.01.1002 单调队列] hdu 5289 Assignment
题意: 给你n个人和一个k 问你把这n个人分成多少个连续的子区间,要求区间每个数两两相差绝对值小于k 思路: 我们仅仅只需要对于当前位置,最左边那个和它绝对值相差大于等于k 的位置在哪 假设对于i这个位置,最左边的位置是tep,不存在的话tep=0 那么当且位置的贡献就是 sum[i]=min(i-tep,sum[i-1]+1); 那么对于这个位置怎么求的话,我是使用了两个单调队列
【人工智能论文发表】基于医学病例文本和多模态大模型的医疗影像分割方法研究
摘要:本研究提出MMS-Former,一种基于级联多模态Transformer的文本引导医学图像分割框架。该模型创新性地将临床文本信息深度融入图像分割全过程,通过SwinUNETR提取视觉特征,ClinicalBERT编码病历文本,并在解码器的每个上采样阶段通过交叉注意力模块实现多级文本特征融合。实验表明,相比纯视觉模型,MMS-Former在Dice系数和IoU指标上分别提升3%以上,在处理边界模糊目标时表现尤为突出。模型还设计了结合Dice损失和图文对比损失的复合目标函数,确保分割精度与语义对齐。代码实
HDU 5289 Assignment
HDU 5289 Assignment单调队列、线段树题目给一个数列,求满足下列条件的子区间的个数: 对于子区间[L, R]内的任意两个元素的差值小于k。思路暴力O(nlognlogn)O(nlognlogn)(967ms): 两个set维护,双指针ij。i指向区间首端元素,j指向区间尾端元素。set统计最值。如果最大值减最小值大于k了,那么在set中吧j指向的元素移除,j++。单调栈O(n)O
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
RMQ+二分 Assignment HDU - 5289
GTMD数组越界返回WAAC代码:#include <map> #include <set> #include <stack> #include <cmath> #include <queue> #include <bitset> #include <string> #include <vector&
蓝牙模块HM-10手册
蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。
hdu 5289 Assignment 二分+rmq
题意: 问有多少区间段,最大小值差<k。 做法: 枚举右端点,很明显 区间越大,最大小值差越大,所以有线性关系。所以可以二分。找到差值小于k的点,这个点到右端点之间所有点都可以做为左端点。 线段树和树状数组都可能超时,离线最大小值计算最稳的就是RMQ了。
VC中sqlite的使用
在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示
hdu 5289 Assignment 二分+RMQ 2015 Multi-University Training Contest 1 02
题意:给出1~n的一个序列,求区间最大值-区间最小值 RMQ处理出区间最大最小值,易知某段区间的最大值-其最小值会随着区间长度的减小而减小,因此可以通过枚举左端点,二分右端点来计算以左端点为起点的区间满足条件的贡献。 #include #include #include #include #include #include #include #include #include
HDU 5289 Assignment (RMQ+二分)
求任意区间满足R-L #include #include #include #include #include #include using namespace std; typedef long long LL; const int inf = 0x3f3f3f3f; const double oo = 10e9; const double eps = 10e-9; const i
hdu 5289 Assignment(15多校第一场1002)
//15多校第一场1002 //RMQ+二分 //求最大值最小值小于k的区间数。 //RMQ预处理区间的极值。 //然后通过枚举区间左端点,二分右端点进行累加。 //每次累加的个数为区间长度(R-L+1); #include #include using namespace std; typedef long long LL; #define MIN(a,b) a<b?a:b #define MA
(ST+二分或贪心)hdu5289 Assignment
传送门: hdu5289 Problem Description Tom owns a company and he is the boss. There are n staffs which are numbered from 1 to n in this company, and every staff has a ability. Now, Tom is going to assign ...
HDU5289.Assignment(多校第二题)
题意:求有多少个区间满足题目要求 思路一: 以i为起点的区间满足题意的有多少个 st+二分#include <map> #include <set> #include <stack> #include <queue> #include <cmath> #include <ctime> #include <vector> #include <cstdio> #include <cctype> #
hdu 5289(二分+RMQ) Assignment
题意:给一个序列,然后求出连续的序列中最大和最小值之差小于k的。思路二分+ST 二分下标,然后找一个最大的区间满足区间内最大最小值相差小于k,当前这个位置对于答案的贡献就是这个区间长度。 求一个静态数组的区间最大最小值,用ST算法就好了。参考code:/* #pragma warning (disable: 4786) #pragma comment (linker, "/STACK:0x8
Hdu-5289 Assignment (二分+RMQ || 单调队列)
Problem Description Tom owns a company and he is the boss. There are n staffs which are numbered from 1 to n in this company, and every staff has a ability. Now, Tom is going to assign a special task
hdu5289 Assignment --2015多校训练赛(一)
题意: 给定一串数字,里面存在多少个区间[l, r] 使得里面的最大值与最小值之差小于k。 思路: 用RMQ预处理出所有区间的最大值与最小值之差。之后枚举左端点L, 二分处理差值小于k的最左边端点R,把所有 的R-L+1加上就是答案。 /*********************************************** * Author: fisty * Cr
[HDOJ5289]Assignment(RMQ,二分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5289 题意:求满足区间内最大值和最小值差为k的区间个数。 预处理出区间的最值,枚举左端点,根据最值的单调性二分枚举右端点,使得找到最右侧max-min<k,区间数为[i,...hi]的个数,即hi-i+1个。 1 #include <bits/stdc++.h> 2 ...
646



被折叠的 条评论
为什么被折叠?



