Codeforces Round #381 (Div. 2) E. Alyona and towers 差分+ 线段树并

Screenshot_2026-11-03-16-23-09-34.jpg 立即下载
题意

对于一系列塔高ai, 求满足
al<al+1<al+2<⋯<ak>ak+1>ak+2>⋯>ar.的最长区间[l,r]。

塔高ai会根据m次操作变化,对每次变化给出此刻的解。

参考http://blog.youkuaiyun.com/dormousenone/article/details/53363374

分析

针对区间修改及维护的问题,很容易想到线段树。

可以想到al<al+1<al+2<⋯<ak>ak+1>ak+2>⋯>ar,令为为sub[i]=a[i]−a[i−1](sub[i]>0为+;sub[i]<0为−) 。

此时问题即可转换为求满足++⋯++−−−⋯−−序列的sub的最长区间。

而区间更新即可转换为对sub[l−1]+d,sub[r]−d的单点更新。

所以这个很像是组队赛的地方的东西就是差分数组?。。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 3e5+10;
long long sub[maxn],a[maxn];
struct Node{
    int left,right,lmx,rmx,mx;
}seg[maxn<<2];
void upmx(int l,int r,int p){
    int mid = (l+r)>>1;
    seg[p].mx = max(seg[p*2].mx,seg[p*2+1].mx);
    seg[p].lmx = seg[p*2].lmx;
    seg[p].rmx = seg[p*2+1].rmx;
    if((sub[mid] > 0 && sub[mid+1] != 0) || (sub[mid] < 0 && sub[mid+1] < 0)){
        seg[p].mx = max(seg[p].mx,seg[p*2].rmx + seg[p*2+1].lmx);
        if(mid-l+1 == seg[p*2].lmx) seg[p].lmx = seg[p*2].lmx + seg[p*2+1].lmx;
        if(r-mid == seg[p*2+1].rmx) seg[p].rmx = seg[p*2+1].rmx + seg[p*2].rmx;
    }
}
void build(int l,int r,int p){
    seg[p].left = l,    seg[p].right = r;
    if(l == r){
        if(sub[l])  seg[p].lmx = 1, seg[p].rmx = 1, seg[p].mx = 1;
        return;
    }
    int mid = (l+r)>>1;
    build(l,mid,p*2);
    build(mid+1,r,p*2+1);
    upmx(l,r,p);
}
void update(int l,int r,int idx,int p){
    if(l == r && l == idx){
        if(sub[l])    seg[p].lmx = 1, seg[p].rmx = 1, seg[p].mx = 1;
        else    seg[p].lmx = 0, seg[p].rmx = 0, seg[p].mx = 0;
        return;
    }
    int mid = (l+r)>>1;
    if(l <= idx && idx <= mid)  update(l,mid,idx,p*2);
    else    update(mid+1,r,idx,p*2+1);
    upmx(l,r,p);
}
int main(){
    int n,m;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%I64d",&a[i]);
    for(int i=1;i<n;i++)
        sub[i] = a[i+1] - a[i];
    if(n!=1)    build(1,n-1,1);
    scanf("%d",&m);
    for(int i=0,l,r,d;i<m;i++) {
        scanf("%d %d %d",&l,&r,&d);
        if(n==1)    {   printf("1\n");  continue;   };
        if(l!=1)    sub[l-1] += d,    update(1,n-1,l-1,1);
        if(r!=n)    sub[r] -= d,  update(1,n-1,r,1);
        printf("%d\n",seg[1].mx+1);
    }
}
研发流程后端开发工具,提示功能开发效率 后端开发工具 立即下载

相关推荐

机器人具有扰动抑制功能的有限时间基于方位角的领航者-跟随者编队控制(Matlab代码实现)

内容概要:本文档标题为《Plecs全桥LLC谐振变换器仿真模型.txt》,但实际内容并未涉及该主题的具体技术细节或仿真建模过程。相反,文档实质是一份由科研服务团队发布的跨学科资源目录,集中展示了大量基于Matlab、Simulink、Python、PSCAD等平台实现的科研项目与算法开发案例,涵盖电力系统、无人机路径规划、微电网优化、状态估计、信号处理、车间调度、图像处理、通信技术、雷达追踪、智能优化算法等多个工程技术领域。每个条目以“【】”标注研究主题,并注明“Matlab代码实现”“Python代码实现”等形式,表明其为可提供技术支持与代码资源的服务项目。文档末尾频繁出现“完整资源下载:公众号——荔枝科研社”及百度网盘链接,明确体现出其作为科研辅助服务推广与引流工具的功能属性。; 适合人群:面向电气工程、自动化、控制科学与工程、计算机科学、智能制造、新能源、航空航天、通信工程及相关交叉学科的研究生、高校教师、科研人员及企业研发工程师。; 使用场景及目标:①为科研人员提供课题选题、技术路线设计与算法实现的参考范例;②辅助学生或研究人员完成课程设计、毕业论文、项目仿真与算法复现任务;③作为第三方技术服务团队的能力展示目录,便于潜在客户快速了解其在多领域提供的定制化仿真与算法开发服务范围。; 阅读建议:此文档并非传统意义上的学术论文或技术教程,而是一份高度碎片化、广告性质浓厚的资源索引清单。读者应忽略其误导性的文件名,将其视为一个综合性科研技术服务目录,重点关注自身研究方向相关的条目,并通过文末提供的公众号或网盘链接进一步获取具体代码与资料。同时,需注意甄别资源的技术质量、原创性与适用性,避免盲目依赖外部服务。

Codeforces Round #381 Div.2

A:Alyona and copybooks 题目大意:已经给了你n本书,你可以选择花a元买一本书,花b元买两本书(严格两本),花c元买三本书(严格三本),让你花最少的钱买x本书使得n+x为4的倍数。 思路:枚举一下买一本书,两本书,三本书的次数,然后统计答案即可。 #include<cmath> #include<cstdio> #include&...

V469584691的博客 295

科技中介服务机构如何打造高效、可复制的技术交易服务流程?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

Alyona and towers CodeForces - 739C (线段树)

大意: 给定序列, 要求实现区间加, 询问整个序列最长的先增后减的区间. 线段树维护左右两端递增,递减,先增后减的长度即可, 要注意严格递增, 合并时要注意相等的情况, 要注意相加会爆int. #include <iostream> #include <random> #include <algorithm> #include...

weixin_30609331的博客 180

高校技术转移办公室人员如何提升科研成果的市场推广与转化成功率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

基于LSTM神经网络的风电功率预测研究(Matlab代码实现)

内容概要:本文档名为《Plecs全桥LLC谐振变换器仿真模型.txt》,但其实际内容并未包含与Plecs或全桥LLC谐振变换器相关的具体仿真模型,而是汇集了大量来自优快云博客平台的技术文章标题和片段,内容涉及基于MATLAB的电力系统动态分析、风储VSG系统仿真、多无人机路径规划、最优潮流计算、卡尔曼滤波状态估计、车间调度算法、无线电力传输、抽水蓄能电站调度等多个领域。这些内容主要围绕Matlab/Simulink或Python代码实现展开,覆盖电力电子、电力系统、自动化控制、优化算法、信号处理、深度学习等方向,具有较强的科研仿真属性。然而,文档整体缺乏统一主题与逻辑结构,信息呈现高度碎片化,更像是多个独立技术资源的罗列而非系统性论述。; 适合人群:适用于从事电力系统、电力电子、自动化控制、智能制造、人工智能、信号处理及相关交叉学科的研究生、高校科研人员及企业研发工程师。; 使用场景及目标:①作为科研选题与技术调研的灵感来源,快速掌握当前热门研究方向与方法论;②获取多种仿真模型的设计思路与实现框架,辅助完成课程设计、学位论文或科研项目的建模仿真任务;③结合文中提及的算法(如PSO、NSGA-II、EKF、CNN、LSTM等)与工具(如Matlab/Simulink、PSCAD等),开展系统性学习与二次开发。; 阅读建议:此文档内容杂乱无章,不具备连贯阅读价值,建议仅将其作为索引线索,从中提取感兴趣的主题后,进一步查找原始完整文献或配套代码资源进行深入研究,避免陷入无效信息泛滥的困境。

Codeforces Round #381 (Div. 2) E. Alyona and towers

Codeforces Round #381 (Div. 2) E. Alyona and towersDescriptionAlyona has built n towers by putting small cubes some on the top of others. Each cube has size 1 × 1 × 1. A tower is a non-zero amount of c

DorMOUSENone的博客 585

产业园区运营负责人如何精准匹配企业与高校科研资源?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

线段树 codeforces Alyona and towers 739C

今天在CF上面看到一个题目,是有关线段树的。好久没有写过线段树,基本都已经忘完。没办法,后来只得看了网上的题解。写下这篇博客,总结一下线段树的操作,便于以后学习,复习。线段树主要树用来维护区间信息,快速的更新与查询的数据结构,在运用过程中,需要根据具体情况,判断出需要维护的信息,达到快速查询,更新的效果。与它的功能对应,线段树的操作主要是更新和查询,当然还有建树(建树类类似于更新)对应的代码中,也

ZT在努力 683

别再对着手册发愁了!手把手教你读懂MIPI-DSI初始化命令(以Rockchip平台为例)

本文深入解析MIPI-DSI初始化命令在Rockchip平台的应用,帮助嵌入式工程师快速掌握LCD屏幕调试技巧。从协议基础到实战指南,详细拆解命令格式、DCS与Generic命令的区别,并提供Rockchip平台的调试全流程与高级技巧,解决常见显示问题。

weixin_42519781的博客 263

openEuler 快速入门

openEuler 是一个专注于企业领域的 Linux 发行版,广泛应用于服务器、云计算和边缘计算场景。最初由华为开发,现在由 Open Atom Foundation 进行开发和管理。Open Atom Foundation 是中国第一个开源软件基金会,得到了华为、阿里巴巴、腾讯、百度等知名企业的支持,并且中国信息通信部也是该基金会的一部分。可以将 openEuler 看作是 Red Hat 或 SUSE Linux 的等价物,但它与 SUSE Linux 更为相似。

HuaweiLab_Peach的博客 2055

【CodeForces】- 739C Alyona and towers

Alyona has built n towers by putting small cubes some on the top of others. Each cube has size 1 × 1 × 1. A tower is a non-zero amount of cubes standing on the top of each other. The towers are next to

Pure_W的博客 737

新手避坑指南:用COMSOL Multiphysics仿真气体放电(汤逊vs.流注)

本文详细介绍了使用COMSOL Multiphysics仿真气体放电的实战指南,涵盖汤逊理论和流注模型的实现方法。通过对比两种放电模型的关键参数和物理场配置,帮助新手避免常见错误,准确预测气体击穿过程。文章还提供了工程应用案例,如高压绝缘子设计优化,展示了仿真技术在电力设备绝缘设计中的实际价值。

weixin_28716181的博客 473

[CF739C]Alyona and towers

Alyona and towers 题解 很冗杂的一道题。 思路其实是很容易想到的,毕竟就是一道线段树板子题。 我们可以通过线段树来维护每一个区间的符合要求的最长子串长度,最长向左端点递增子串长度,递减子串长度,先递增再递减子串长度,以及向右端点的以上三个操作的长度。 每次操作在线段树上修改一个区间,每次合并区间时更新出当前区间的值。 但我们发现如果还要区间相加带懒标记的话就太麻烦了,于是我们考虑差分,这样判断递增与递减时就只需要判断一个点的正负性了,而且每次修改时只用修改左右端点两个点,方便了许多。 但总

StaroForgin的博客 307

内网Linux服务器离线安装python包

3、将下载的依赖包和requirements.txt 拷贝到内网主机,依赖包和requirements.txt放同一级目录,进入该目录,运行指令。其实还有个更加方便的办法,联网主机装个与内网主机一样环境的虚拟机,在虚拟机中下载py包,拷贝到内网主机后就能直接安装了,省去手动下载py包的步骤。简单记录下最近遇到的一个小问题,内网主机没有内网源,处于无互联网状态,安装python包只能通过联网主机下载好后拷贝到内网主机。由于内网主机安装了多个版本的python,为了防止搞错,使用这种方式来调用pip安装。

cyc头发还挺多的博客 651

S4-FPGA-K7板级原理图硬件实战

xilinx K7板级硬件实战

weixin_66510961的博客 6153

17.CF739C Alyona and towers 区间合并线段树

给定序列,要求支持区间加,以及查询最长先增后减子区间(单峰序列)长度 非常典型的区间合并线段树,记录左右起LIS,LCS,单峰

HeartFireY的博客 384

python批量调用大模型API:多线程和异步协程

本文介绍了利用多线程技术批量调用大模型API的实现方法。核心是通过并发请求提高处理效率,主要采用线程池管理并发数量、结果聚合等技术。文章提供了一个完整的Python实现示例,包含APIBatchCaller类及其single_api_call和batch_call方法,详细解析了并发控制、错误处理等关键点,并给出了使用注意事项,包括并发数设置、重试策略和超时处理等。该方案特别适合IO密集型任务,能显著提升批量API调用的效率。

Cachel Wood的博客 760

CodeForces 739C Alyona and towers

题目大意 给定一个长度为n的序列a和m个操作,每个操作将[L,R]的元素加上d。 每次操作完后询问序列a中最长的连续子序列满足al<al+1<...<ax>...>ar−1>ar的长度是多少。 Data Constraint n,m≤3×10^5

Akakii的博客 1462

ITKMontage---ITK自动拼接模块

本文分享ITK中Remote中的ITKMontage拼接模块,希望对各位小伙伴有所帮助!1. ITKMontage介绍在医疗图像处理过程中,图像拼接有很多用处,比如DR图像的拼接。ITKMontage可以快速稳定的处理数据量较大的拼接图像。强度不均匀性校正配准全局优化融合2. ITKMontage安装ITKMontageITKMontage可脱离ITK进行单独安装,也可在ITK安装时作为模块进行安装。单独安装ITK模块安装在ITK编译时,选择ITKMontage模块。

qq_40041064的博客 450

YOLOv11改进策略【卷积层】| DEConv: 强度信息与梯度特征融合的细节增强 适用于小目标与细节目标检测任务

本文记录的是利用 模块优化 的目标检测网络模型。(Detail-Enhanced Convolution,细节增强卷积)的设计旨在,解决 目标检测网络中传统普通卷积缺乏目标细节相关先验、对小目标边缘、目标与背景边界等关键细节捕捉能力不足的问题,同时避免引入额外参数量与计算开销,以适配 对实时推理性能与检测精度的双重需求。DEA-Net: Single image dehazing based on detail-enhanced convolution and content-guided atte

Limiiiing的博客 1498

codeforces 739c Alyona and towers

题意给定一个序列,求最长的严格先递增后递减区间长度。有m次区间加修改,每次修改后输出答案。 思路线段树。diff[i] = a[i] - a[i - 1],diff[1] = 0.这样每次的区间加就就变成了单点修改,即l点加k,r+1点减k。需要注意当l为1或者r为n时无需修改。

rua~ 1106

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

[Codeforces div1] Round 739C. Alyona and towers 线段树+差分数组

这题应当有很多做法 拿到题目以后有很多想法,光是不同的线段树就有两三种,而且我觉得分块卡一卡也是能卡过去的。 最后写了最简单的方法,代码比起其它的解法都短很多。 考虑查分后的数组,原问题变可以转化成求最长的一段正数后紧接一段负数的长度。 若用折线将这串数字连接起来,那么每一段“合唱队形”数便可以表示成两个波谷之间的距离。 线段树维护所有的波谷,维护最大的两个波谷之间的距离。 修

HbFS- 651

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Codeforces Round #381 (Div. 1) B. Alyona and a tree 二分 + 前缀和

题目链接 一、题意 有一棵树,1为根节点。树的节点i有一个权值a[i],代表节点i的祖先节点x如果到i的路经长度小于等于a[i],则称x控制i。控制关系不传递,即x控制j,j控制i并不一定能得到x控制i。 现在给出树的边、每一个节点的权值,求每一个节点能够控制的节点的数目。 二、思路 思考每一条链。可以发现链底端的节点v可以被链上连续的节点u控制。如果用depth[]数组表示从根节点到每...

xuzonghao的博客 226

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

解题报告:Codeforces Round #381 (Div. 1)B. Alyona and a tree

B. Alyona and a tree time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Alyona has a tree with n vertices. The

Hee的博客~ 505

Codeforces 739C.Alyona and towers (线段树/非递归线段树)

题目链接:http://codeforces.com/contest/739/problem/C 题意:给定30万个正整数,和30万个操作,每次操作后输出查询结果。 操作:每次把从L到R的数都加上D 查询:最宽的Hill的宽度。定义:先递增后递减的连续n个数称作宽度为n的Hill。

岩之痕 2073
上一篇: [BZOJ4326][NOIP2015]运输计划(二分+dfs序+树上差分)
下一篇: poj 2227 & usaco 2005 月赛 The Wedding Juicer 题解 bfs+优先队列
sega_handsome
博客等级 码龄10年 7粉丝 164原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值