「CF407E」k-d-sequence

news/2025/2/13 11:01:04/文章来源:https://www.cnblogs.com/Xdik/p/18712726

考试的时候被3100的评分吓住了,但其实这个评分有点虚高。

先来分析一下题面的要求:区间内加入至多 \(k\) 个数形成一个公差为 \(d\) 的等差数列

那么区间要满足一下条件:

  • 所有数对 \(d\) 取模的值相等

  • 没有重复的数

  • \((max-min+1)-(r-l+1)\le k\)

看着没有其它的选择,只能使用扫描线,前两个条件在扫描右端点的时候修改左端点的最小值即可,第三个条件可以转化成 \(w_l=max-min+l\le k+r\) 于是维护 \(w_l\) ,修改 \(max,min\) 可以使用单调栈,每次加入元素的时候就可以把 \(max,min\) 改变了的区间找出来进行修改,最后查询答案就直接在线段树上二分就可以了,注意 \(d=0\) 的特殊情况,这种情况就直接找最长连续段即可

#include <bits/stdc++.h>
#define int long long
#define ull unsigned long long
#pragma GCC optimeze(3)
#pragma GCC optimeze(2)
#define PII pair<int, int>
#define pb push_back
#define fi first
#define se second
#define lowbit(x) (x & (-x))
#define inv(x) (qpow(x,mod-2))
#define blong(i) ((i+K-1)/K)
using namespace std;
const int N=2e5+10;
const int M=3e5+5;
const int mod=9901;
double eps=1e-6;
inline int read(){char ch=getchar();bool f=0;int x=0;for(;!isdigit(ch);ch=getchar())if(ch=='-')f=1;for(;isdigit(ch);ch=getchar())x=(x<<1)+(x<<3)+(ch^48);if(f==1)x=-x;return x;
}
unordered_map<int,int>lst;
int n,k,d,a[N],ansl=1,ansr=0,tr[N<<2],b[N<<2];
int stk1[N],stk2[N],top1,top2;
void pushup(int p){tr[p]=min(tr[p<<1],tr[p<<1|1]);
}
void pushdown(int p){if(b[p]){tr[p<<1]+=b[p],tr[p<<1|1]+=b[p],b[p<<1]+=b[p],b[p<<1|1]+=b[p],b[p]=0;}
}
void build(int p,int l,int r){if(l==r){tr[p]=l;return;}int mid=(l+r)>>1;build(p<<1,l,mid);build(p<<1|1,mid+1,r);pushup(p); 
}
void change(int l,int r,int k,int p,int s,int t){if(s>=l&&t<=r){tr[p]+=k,b[p]+=k;return;}pushdown(p);int mid=(s+t)>>1;if(mid>=l)change(l,r,k,p<<1,s,mid);if(mid<r)change(l,r,k,p<<1|1,mid+1,t);pushup(p);
}
int query(int L,int R,int k,int p,int s,int t){if(s>R||t<L||tr[p]>k)return 0;if(s==t)return s;int mid=(s+t)>>1;pushdown(p);int x=query(L,R,k,p<<1,s,mid);return x? x:query(L,R,k,p<<1|1,mid+1,t);
}
signed main(){ ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n>>k>>d;for(int i=1;i<=n;i++)cin>>a[i],a[i]+=1e9;if(!d){for(int i=1;i<=n;i++){int l=i,r=i;while(r<=n&&a[r]==a[l])r++;if(a[r]!=a[l])r--;if(r-l>ansr-ansl)ansl=l,ansr=r;i=r;} cout<<ansl<<' '<<ansr;return 0;}build(1,1,n);int L=1;for(int i=1;i<=n;i++){if(a[i]%d==a[i-1]%d)L=max(L,lst[a[i]]+1);else L=i;lst[a[i]]=i;while(top1&&stk1[top1]>=L&&a[stk1[top1]]>a[i]){change(max(L,stk1[top1-1]+1),stk1[top1],a[stk1[top1]]/d,1,1,n);top1--;}change(max(L,stk1[top1]+1),i,-a[i]/d,1,1,n);stk1[++top1]=i;while(top2&&stk2[top2]>=L&&a[stk2[top2]]<a[i]){change(max(L,stk2[top2-1]+1),stk2[top2],-a[stk2[top2]]/d,1,1,n);top2--;}change(max(L,stk2[top2]+1),i,+a[i]/d,1,1,n);stk2[++top2]=i;int xx=query(L,i,i+k,1,1,n);if(xx){if(i-xx>ansr-ansl)ansl=xx,ansr=i;}}cout<<ansl<<" "<<ansr;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/883126.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linkedhashmap和hashmap区别

https://docs.pingcode.com/ask/67278.htmllinkedhashmap和hashmap区别2023-12-26 261 百科 LinkedHashMap和HashMap是Java中用于存储键值对的数据结构,它们之间的主要区别在于对键值对的顺序管理和性能特征。LinkedHashMap保留了键值对的插入顺序,而HashMap则不保证顺序。Li…

secureCRT 个人配置

前言secureCRT 是一款比较简介轻量的远程工具,支持ssh、串口登录等操作。下面的内容是根据本人操作习惯做的一些配置,留作后续再次安装时参考。 配置1. 修改鼠标功能 设置 -> 全设置 -> 外观 -> 鼠标功能去掉勾选 粘贴(P)用鼠标的xx键,默认是鼠标右键,但是查询系统…

看板工具与跨团队协作:从流程标准化到数据驱动决策

通过这些策略,看板工具可以有效提升跨团队协作效率,确保项目顺利进行。跨团队协作效率优化可以通过看板工具实现,以下是一些关键步骤和策略: 1. 选择合适的看板工具 ● 工具选择:根据团队需求选择适合的看板工具,如banlikanban、Trello、Asana、Monday.com等。 ● 功能评…

MINE类型

1、什么是MIME类型MIME(Multipurpose Internet Mail Extensions)类型是在互联网上用于标识文件类型的标准方式。它在很多应用中得到了广泛的应用,例如电子邮件、Web浏览器和Web服务器等。MIME类型是由两部分组成的,第一部分是媒体类型(media type),用来表示文件的大类别…

解决微信小程序原生云开发退款报错“特约子商户商户号未授权服务商的产品权限”的问题

背景:微信小程序云开发支付没问题,退款时就会报这个错。 现象: 解决方法流程: 1、打开微信小程序开发者工具上面的云开发界面: 2、进入设置: 3、其他设置: 需要授权退款API权限,我这里已经授权了,未授权的话会有授权按钮,点击后会提示等待商户审核 4、我们来到微信支…

探索ChatGPT背后的前端黑科技

由于图片和格式解析问题,可前往 阅读原文在人工智能与互联网技术飞速发展的今天,像ChatGPT这样的智能对话系统已经成为科技领域的焦点。它不仅能够进行自然流畅的对话,还能以多种格式展示内容,为用户带来高效且丰富的交互体验。然而,这些令人惊叹的功能背后,离不开前端技…

OTA软件升级管理系统

OTA(空中下载技术)是通过空中下载的方式对车辆中的软件进行远程升级。经纬恒润OTA软件升级管理系统基于软件架构、应用架构、业务架构和技术架构,为整车提供云-管-端-屏完整OTA解决方案,可靠地完成系统更新、软件升级、功能迭代和安全漏洞修复等功能。同时支持固件升级(FOTA…

深度学习经典 - 鱼书 - 《深度学习入门:基于Python的理论与实现》 - PDF免费下载

深度学习经典“鱼书”,下载地址:https://pdfs.top/book/深度学习入门:基于Python的理论与实现.html。本书深入浅出地介绍了深度学习的原理,使用Python3从零开始构建深度学习模型。书中详细讲解了神经网络、误差反向传播法、卷积神经网络等核心技术,并探讨了深度学习在自动…

DeepSeek 相关知识学习和整理ing...

【硬件相关】 HBM3e:HBM3e是HBM(高带宽内存)技术的迭代升级版本,属于HBM3的扩展。它采用3D堆叠封装技术,将多个DRAM芯片垂直堆叠,通过硅互连通道传输数据,大幅提升带宽和容量,同时降低功耗。 迭代背景:HBM系列从第一代(HBM)到第五代(HBM3e)持续升级,每一代都提高…

打靶记录27——Tre

靶机: https://www.vulnhub.com/entry/tre-1,483/ 下载(镜像):https://download.vulnhub.com/tre/Tre.zip 难度:中目标:获得 Root 权限 + Flag攻击方法:主机发现 端口扫描 信息收集 进阶路径枚举 EXP 代码改造 突破边界方法1 突破边界方法2 突破边界方法3 权限提升主机发…

7. Docker 容器数据卷的使用(超详细的讲解说明)

7. Docker 容器数据卷的使用(超详细的讲解说明) @目录7. Docker 容器数据卷的使用(超详细的讲解说明)1. Docker容器数据卷概述2. Docker 容器数据卷的使用演示:2.1 宿主 和 容器之间映射添加容器卷2.2 容器数据卷 读写规则映射添加说明2.3 容器数据卷的继承和共享3. 最后:坑:…

到底值不值得本地部署残血版DeepSeek?一文说清!教你如何白嫖满血版DeepSeek

一、介绍最近一段时间,DeepSeek 备受关注,夏天也向身边朋友推荐。但它常无法使用,原因是受到大规模恶意攻击,且 IP 地址在美国。 通过以下网站可以查看DeepSeek网站状态: status.deepseek.com/ 可以发现,最近标红的就是故障中​若遇服务器繁忙提示,大概率是被攻击了,并…