梦熊课程#1 前缀和,差分,二分,双指针

news/2025/3/29 19:15:43/文章来源:https://www.cnblogs.com/past-Delete/p/18775077

前缀和与差分

P4552 差分

差分数组

差分数组()是一个可以表现数组内变量变化的一个数组,具体表现形式为:

  • \(b_1=a_1\)

  • \(b_i=a_i-a_{i-1}\)

对于这个数组有一些非常优雅的性质:

  • 实现区间加显然可以左端点加 \(1\) ,右端点减 \(1\)

  • 如果整个数组中的数全部为 \(x\) ,则 \(a_1=x\)\(a_2=a_3=\) ... \(a_{i-1}=a_i=0\);

了解这一知识点后便可以非常轻松的完成这道题了。

Code.

#include<bits/stdc++.h>
#define endl "\n"
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
//value 
const int inf=2147483647;
const int mod=1e9+7;
int a[1000005],b[1000005];//function 
void solve(){return;
}int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); //	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);int n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++)b[i]=a[i]-a[i-1];ll up=0,down=0;for(int i=2;i<=n;i++){if(b[i]<=0)down+=(-1*b[i]);else up+=b[i];}cout<<max(up,down)<<endl;cout<<abs(up-down)+1<<endl;return 0;
}

P9681 前缀和

通过观察题面,我们显然可以得到以下性质:

  • “幽默的数组”的形式显然是前面一串负数只有最后一个为正数

  • 最后一位正数应大于前面负数和的绝对值

  • 当数组只有一个正数时也是“幽默的数组”

  • 对于一个长度大于 \(1\) 的“幽默的数组”,将左端点右移依然时“幽默的数组”

通过性质我们可以很容易得出一下做法:

将每一个正数的贡献均摊到前方的负数上,通过前缀和可以实现 \(O(1)\) 的查询。意到当负数在查询区间而正数不在时,负数的贡献就不应该被计算,故查询区间右端点应跳到最接近右端点的左端正数位置,此操作可以预处理出每一个数的左端正数,可 \(O(n)\) 处理。时间复杂度为线性,可以通过本题。

Code.

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

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

相关文章

微信公众号---API接口发布文章

最近在做一个项目,需要用到通过API接口发布推文。 基本流程: 1、注册微信公众号(订阅号和服务号都可以) 2、开发配置获取 appid 以及 appsecret,以及配置服务器IP白名单。 3、开发流程:接口需要 access_token 第一步:上传推文的素材,主要是推文的封面以及文章所需要的图…

航航(和一些人讲的题目)

这里标题是 hangjsmh 要求的题解写的非常简略,甚至一道题细节都没有清楚。 AGC067D 首先设排列为 \(1\sim n\) 是可行的。 第一感觉是相邻不可交换,即如果 \(l_i<i\),则 \(r_{i-1}=i-1\)。进一步地,\(r_{l_i\sim i}<i\),如果满足这个条件也易见其唯一性。 画在二维平…

win11自带录屏工具

Setp1: 打开设置Setp2: 打开游戏->摄像Setp3: 配置录制参数Setp4: 开始录像 WIN+Alt+GSetp5: 打开录像文件

杭州储存卡数据恢复之雷克沙短路损坏不识别售后维修失败二次修复

这是一张64G的Lexar雷克沙CF接口内存卡,型号是1066X,CANON佳能5D4相机使用的,这张存储卡是硬件出问题了无法识别,说是可能插卡时角度不对用力顶入后使顶针VCC脚变形短路,通电后导致芯片损坏。客户先寄修到雷克沙官方售后那边进行维修,但最终检测修复失败,说是短路严重,…

RabbitMQ核心架构

Producer:负责产生消息。 Connection:RabbitMQ客户端和代理服务器之间的TCP连接。 Channel:建立在连接之上的虚拟连接,RabbitMQ操作都是在信道中进行。 Broker:一个Broker可以看做一个RabbitMQ服务节点或者服务实例。 Exchange:生产者发送消息到交换器,交换器根据路由ke…

024 登录页-main退出登录功能的实现

这个页面这样写一、 用于创建一个按钮并绑定一个点击事件处理函数。以下是对这段代码的详细解释:<button> 标签:这是 HTML 中的按钮元素,用于在页面上显示一个可点击的按钮。@click 指令:在 Vue.js 中,@click 是一个事件绑定指令,它用于监听按钮的点击事件。@ 是 …

ProfiNet转Modbus TCP协议转换网关驱动三菱PLC与伺服的毫秒级动态参数同步

一、案例背景 在“双碳”战略推动下,新能源锂电池行业迎来爆发式增长。某新能源科技公司新建的锂电池生产线中,涂布工序作为核心环节,采用了德国博世力士乐IndraDriveCX系列伺服驱动器(ProfiNet从站)实现高精度张力控制,而车间级监控系统选用三菱L系列PLC(ModbusTCP主站…

MySQL-面经

目录 MVCC概念?如何实现? 可重复读概念 可重复读下,快照是在什么时候生成的,是事务启动时,还是语句执行前 可重复读下,执行两个select语句,会生成几个快照?MVCC概念?如何实现? MVCC概念:通过「版本链」来控制并发事务访问同一个记录时的行为就叫 MVCC(多版本并发控制…

算法备案五大真相

一些开发者已经了解到算法备案是AI类产品必做的一项资质了,但因为经验有限,依然存在一些盲点和不清楚的地方。今天,我就整理出了最基础但也最重要的五大算法备案真相,供大家参考。如有其它疑问,欢迎进一步咨询算法备案办理问题。一、流程统一,审核不统一 算法备案有全国统…

Cknife配置

项目地址 https://github.com/Chora10/Cknife 使用Java编译器 这里使用eclipse 1. File->Open Project from File System...选择目录,点击完成2. 在刚添加的项目上按右键,并点击导出Export选择可运行的jar文件选择路径3. 这里没有选择或没有配置有效的“Launch configurat…

医疗场景实战:百条数据 RFT 微调盘古大模型,精度大幅提升

摘要:RFT强化微调是一种新型LLM微调方法,通过强化学习与传统微调结合,少量数据即可显著增强领域场景的模型能力。本文分享自华为云社区《医疗场景实战|百条数据RFT微调盘古大模型,效果超越DS》,作者:盘古大模型官方账号。 医疗场景实战|百条数据RFT微调盘古大模型,效果超…

SQL Server 启用 sa

Hello World ‍‍ ‍‍‍‍‍