Hello 2025_D. Gifts Order 线段树

news/2025/2/28 18:50:42/文章来源:https://www.cnblogs.com/lwiwi/p/18743857

传送门

容易想到同时维护\(a_{i} + i\)\(a_{i} - i\),但是我一开始的做法是更新后再扫一遍才能更新出答案,这样不仅时间上爆炸,答案还更新不全。其实完全可以push_up的时候更新答案,这样不仅不会浪费复杂度,还不会漏情况

```cpp
#include<bits/stdc++.h>using namespace std;long long t;
const long long N = 2e5 + 10;
long long n,q,ans;
long long a[N];
struct node {long long pmax,pmin,nmax,nmin,ans1,ans2;
}tr[4 * N];node up(node x,node y) {node res;res.pmax = max(x.pmax,y.pmax);res.pmin = min(x.pmin,y.pmin);res.nmax = max(x.nmax,y.nmax);res.nmin = min(x.nmin,y.nmin);res.ans1 = max({x.ans1,y.ans1,x.pmax - y.pmin});res.ans2 = max({x.ans2,y.ans2,y.nmax - x.nmin});return res;
}void build(long long k,long long l,long long r) {if(l == r) {tr[k].pmax = tr[k].pmin = a[l] + l;tr[k].nmax = tr[k].nmin = a[l] - l;tr[k].ans1 = tr[k].ans2 = 0;return;}long long mid = (l + r) >> 1;build(k * 2,l,mid);build(k * 2 + 1,mid + 1,r);tr[k] = up(tr[k * 2],tr[k * 2 + 1]);
}void change(long long k,long long l,long long r,long long x,long long v) {if(l > x || r < x) return;if(l == r && l == x) {tr[k].pmax = tr[k].pmin = v + l;tr[k].nmax = tr[k].nmin = v - l;return;}long long mid = (l + r) >> 1;change(k * 2,l,mid,x,v);change(k * 2 + 1,mid + 1,r,x,v);tr[k] = up(tr[k * 2],tr[k * 2 + 1]);
}node query(long long k,long long l,long long r,long long x,long long y) {if(l > y || r < x) return (node){-1000000000,1000000000,-1000000000,1000000000,0,0};if(l >= x && r <= y) return tr[k];long long mid = (l + r) >> 1;node res;res = up(query(k * 2,l,mid,x,y),query(k * 2 + 1,mid + 1,r,x,y));return res;
}void solve() {cin >> n >> q;for(long long i = 1;i <= n;i++) cin >> a[i];build(1,1,n);node tmp = query(1,1,n,1,n);cout << max(tmp.ans1,tmp.ans2) << '\n';for(long long p,x,i = 1;i <= q;i++) {cin >> p >> x;change(1,1,n,p,x);node tmp = query(1,1,n,1,n);cout << max(tmp.ans1,tmp.ans2) << '\n';}
}signed main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> t;while(t--) solve();return 0;
}

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

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

相关文章

谷歌地图案例 | 为服务不足的银行客户提供优质服务

谷歌地图占全球导航市场67%,重塑空间运行。Current银行用谷歌地图平台提供精确定位,为“银行服务不足”群体改善财务状况,商家和客户均受益。据Statista最新数据显示,谷歌地图以67%的全球导航市场份额构建起数字时代的基础设施霸权。这项始于2005年的地理信息服务,已完成从…

解决在Ubuntu中用conda配置环境和下载依赖缓慢问题(重点:mamba)

前情:背景:在重现text2cad文章的过程中,通过environment.yml下载环境和依赖(包括pythonocc-core,pytorch等需要conda安装的包)开发环境:Ubuntu待下载的包: 官方environment.yml中要求的包及对应版本要求(之后会根据我的cuda驱动版本等其他问题,对包的版本进行调整):de…

又一款免费的资产设备管理软件 - WGFIX

WGFIX是wgcloud团队最近发布的一个资产管理系统,免费开源,而且使用非常简单,部署也很方便,非常适合中小企业使用的一款IT资产设备管理系统 下载:www.wgstart.com WGFIX资产设备管理系统是私有化部署的B/S系统,只需要在本地搭建好WGFIX后,所有用户都通过浏览器来访问使用…

4D毫米波雷达

4D毫米波雷达平台产品MRR610 & SRR610是经纬恒润新设计推出的第六代毫米波雷达平台产品,平台选用业内高集成度的SoC解决方案,可为客户提供高性价比雷达单品和多雷达融合解决方案。 4D毫米波雷达平台产品MRR610 & SRR610是经纬恒润新设计推出的第六代毫米波雷达…

学习备忘-不删除32位Office安装AccessDataEngine 64位版本(共存)

一、Access database engine是什么Access database engine是微软官方推出的一款功能强大的数据库引擎可再发型程序包,主要用于access数据库调用引擎,方便office系统文件和office应用程序之间的数据传输。 二、Access Database EngineMicrosoft Access Database Engine 64位是…

AI程序员入场!揭秘直播吧研发效能大提升的秘密武器

直播吧自2007年成立以来,一直走在体育赛事直播与资讯服务领域的前沿。作为国内知名的体育赛事直播与资讯平台,直播吧始终以“让体育爱好者更便捷地获取赛事信息和观看直播”为使命,致力于通过其APP、网站等渠道,为用户提供全面的体育赛事直播、新闻资讯、数据分析等服务。服…

第一章 使用基于类的视图(class-based view)创建网页App

实践二 —— 使用基于类的视图(class-based view)创建网页App 1. 完成实践一的环境部署2. 进入虚拟环境pipenv shell3. 创建一个名为home的apppython manage.py startapp home此时文件目录如下:4. 将home添加到my_project/settings.py文件中INSTALLED_APPS = [django.contri…

Linux中禁止存在空口令、多余和过期的账户

1、引言Linux操作系统因其稳定性和安全性被广泛应用于服务器和数据中心。然而,在Linux环境中,空口令账号、多余账户和过期账户的存在可能成为安全漏洞,给系统带来潜在的风险。本文将深入探讨Linux环境下空口令账号、多余账户和过期账户的安全风险,并提出相应的防范策略。 2…

2.28 课堂ai生成项目剖析

1》 对所需解析的对象项目进行详细描述然后询问ai应该怎样进行开发 老师要求的使用自然语言,我们也对ai提出用自然语言进行描述的要求ai给出第一次的为解决方案 但是方向都不很具体,说明ai对于我们已经掌握的技术也不明晰,可以在告诉ai我们嫩所掌握并且熟悉的语言。让ai根据…

pingtunnel实现内网穿透

1.pingtunnel实现内网穿透 pingtunnel是基于ICMP协议的隧道工具,用于内网穿透。 工具链接如下:https://github.com/esrrhs/pingtunnel环境准备:kail2023【NAT模式】【客户端】 centos7.8【两块网卡,分别是NAT和lan1】【服务端】 win7【lan1模式】【内网主机】这里提供一些出…

Refit 原理解析:从初识到实践

在现代的分布式系统和微服务架构中,HTTP API 调用是不可或缺的一部分。为了简化 HTTP 请求的构建和解析,我们可以使用 Refit 这个强大的库。Refit 通过将 HTTP API 抽象为接口,使得调用远程服务变得非常简单和直观。 1. 初识 Refit Refit 是一个用于 .NET 的类型安全的 REST…

database file 2 failed verification check

1.问题现象: rman 备份时,报错:2号数据文件异常backup validate datafile 2;2.排查过程 a.通过dbv查看是否有坏块 dbv file=CS_DATA02.dbfselect * from v$database_block_corruption; b.发现没有坏块,检查一下数据文件和数据文件头scn号,发现2和9号数据文件头部scn号和其…