(模板)线段树(单点更新,单点求值)

非递归ZKW线段树完全模板 经过一番刷题,终于用非递归线段树搞定线段树的基本问题,ZKW神牛的《统计的力量》带我入门,尽管后面一大堆都看不懂……言归正传,贴模板,顺便为以后区域赛做准备——int M, T; /* M和T都是非递归线段树里面的关键变量,M的含义同《统计的力量》中的M含义相同,T是M的高度 计算公式:for (M = T = 1; M < n + 2; M <<= 1, T++);其中n是元素个数 */ st 阅读详情

最主要的区别就是不用lazytab了,所以不需要pushdown了,不过还是跟复杂版的有所区别的…小心对待
(原题是洛谷P1198,数据加强以后要记得特判数列为空的情形)

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn = 200001;
int m, d, len = 0;
ll array1[maxn], t = 0, sum[maxn << 2];
void buildtree(int node, int begin, int end)
{
    if (begin == end) {
        sum[node] = array1[begin];
        return;
    }
    int m = (begin + end) >> 1;
    buildtree(node << 1, begin, m);
    buildtree(node << 1 | 1, m + 1, end);
    sum[node] = max(sum[node << 1], sum[node << 1 | 1]);
}
void update(int node, int ind, int change, int begin, int end)
{
    if (begin == end) {
        sum[node] = change;
        return;
    }
    int m = (begin + end) >> 1;
    if (ind <= m)
        update(node << 1, ind, change, begin, m);
    else
        update(node << 1 | 1, ind, change, m + 1, end);
    sum[node] = max(sum[node << 1], sum[node << 1 | 1]);
}
ll query(int node, int begin, int end, int left, int right)
{
    if (left <= begin&&right >= end)
        return sum[node];
    int m = (begin + end) >> 1;
    ll p1 = 0, p2 = 0;
    if (left <= m)
        p1 = query(node << 1, begin, m, left, right);
    if (right > m)
        p2 = query(node << 1 | 1, m + 1, end, left, right);
    return max(p1, p2);
}
int main(void)
{
    cin >> m >> d;

    buildtree(1, 1, m);
    for (int i = 1; i <= m; i++) {
        char a; ll n;
        cin >> a >> n;
        if (a == 'Q') {
            t = query(1, 1, m, len - n + 1, len);
            printf("%lld\n", t);
        }
        else {
            ll temp = (n + t) % d;
            array1[++len] = temp;
            update(1, len, temp, 1, m);
        }
    }

    return 0;
}
深度强化学习中的动作屏蔽(Action Masking) 在复杂环境中使用动作屏蔽,实现更好的训练效果 阅读详情

相关推荐

别再只用三次多项式了!用MATLAB手把手教你搞定七次多项式轨迹规划(附完整代码)

本文详细介绍了七次多项式在轨迹规划中的优势与应用,通过MATLAB实现从理论推导到实际代码的全过程。相比传统的三次多项式,七次多项式能精确控制位置、速度、加速度和加加速度,实现更平滑的运动控制,特别适用于工业机器人和数控机床等高精度场景。文章包含完整的MATLAB代码示例和优化技巧,帮助工程师快速掌握这一高级轨迹规划方法。

weixin_30872337的博客 297

(模板)线段树(单点更新,区间更新)模板

单点更新 #include <iostream> using namespace std; const int MAX_N = 10010; int s[4*MAX_N]; void up(int p){ s[p] = s[p*2] + s[p*2+1]; } void modify(int p,int l,int r,int x,int v){ //x为要修改...

alex1997222的博客 295

Ultralytics YOLO模块自定义与替换实战技巧

本文详细介绍了在Ultralytics YOLO框架中进行模块自定义与替换的实战技巧。通过从零开始添加全新模块(如注意力模块)到进阶替换现有模块(如增强版卷积),并涵盖模块注册、YAML配置、模型融合及ONNX导出等关键步骤,帮助开发者深度定制YOLO模型,以应对复杂检测任务与部署需求。

numpy6sculptor的博客 930

线段树模板(单点更新,区间更新,RMQ)

1.单点更新 说明 单点更新,区间求和(你问我单点求和??你就不会把区间长度设为0啊?) • sum[]为线段树,需要开辟四倍的元素数量的空间。 • build()为建树操作 • update()为更新操作 • query()为查询操作 时间复杂度:O(nlogn) 使用方法 build(1, n); 建立一个叶子节点为n个的线段树 update(pos...

Bryce1010's Blog 2209

Etcd教程 — 第三章 Etcd集群动态发现、DNS发现

Etcd教程 — 第三章 Etcd集群动态发现、DNS发现

Mr_XiMu的博客 2819

Java网页访问报错?手把手教你解决JRE插件缺失和浏览器拦截问题(附详细截图)

本文针对Java网页访问时常见的JRE插件缺失和浏览器拦截问题,提供了详细的诊断与解决方案。文章首先解释了问题根源在于现代浏览器出于安全考虑停止了对Java插件的支持,然后手把手指导用户确认Java安装、在控制面板配置安全站点列表,并针对Chrome、Edge、Firefox等主流浏览器的不同拦截机制给出了具体的应对策略,最后提供了系统性的故障排查清单,帮助用户彻底解决访问障碍。

weixin_29233857的博客 219

线段树入门讲解+模板(单点查询/更新、区间查询/更新)

先上模板: #include<bits/stdc++.h> using namespace std; struct node { int l,r,w,lazy;//tree的l,r表示数组区间[l,r],w表示[l,r]区间和 }tree[400001]; //lazy!=0是加值,lazy!=-1是改值 void build(int v,int l,int r)...

UncleJokerly 2576

PTA编程—币值转换

我对于这个题的主要思想就是把九位数分三块,对每块进行处理后,再合并。有了这个思想就开始写代码,后面就是哪有洞补哪,哪个测试用例没通过就对其特殊处理…。反正最后测试用例全通过了。 #include<iostream> #include <string> #include <algorithm> using namespace std; char a[10]={'a','b','c','d','e','f','g','h','i','j'}; //既然题目说了最多9位

uyo9ko的博客 990

ACM_线段树模板(单点更新)

#define maxn 1000001 //const int maxn = 100001; int sum[maxn];void update(int root) //单节点更新 { sum[root] = sum[root<<1] + sum[root<<1|1]; } void build(int left, int right, int root) //建树 {

知足常乐的博客 791

基于LLaMA-action模型的文档摘要任务微调

文档摘要是指从长文档中提取关键信息,生成简短而准确的总结。抽取式摘要:从原文中直接抽取关键句子或短语组成摘要。生成式摘要:通过生成新的句子来表达原文的核心内容。混合式摘要:结合抽取式和生成式方法,既保留原文的关键句子,又生成新的内容。新闻网站:自动生成新闻摘要,帮助用户快速了解新闻要点。社交媒体:为用户提供新闻摘要,便于分享和传播。学术搜索引擎:为用户提供学术文献的摘要,帮助用户快速筛选相关文献。学术写作辅助:帮助研究人员快速生成文献综述部分。企业内部文档管理:自动生成文档摘要,便于员工快速了解文档内容。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 1430

【OpenClaw从入门到精通】第63篇:A股智能分析实战——用OpenClaw搭建个人量化研究助手(2026实测版)

2026年,OpenClaw已成为量化投研圈的现象级工具,八家头部券商密集发布专题研报力证其价值。传统量化投研面临技术门槛高、重复劳动多、策略迭代慢、非结构化数据处理弱四大痛点,而OpenClaw通过“AI智能体+金融Skill+量化API”的融合,实现了从数据获取、策略生成、回测验证到持仓监控的全流程自动化。本文基于2026年最新实测经验,完整呈现个人量化研究助手搭建:从阿里云部署、阿里云百炼API配置(含解析失败解决方案)、Tushare数据源接入,到PB-ROE价值选股、研报复现、自动化回测、持仓监控

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1058

线段树--单点更新模板题

线段树应该是数据结构中的一种吧,说白了,他就是一种工具,只要你学会了他,那么你就可以在以后的学习中去用它。 他的大致用法,就是把一个一维数组改变成一个树的结构,而且这个树还是一个完全二叉树;    上述图就是把一个1-8的区间变成了一个二叉树的结构,为什么我们要这样干呢?这怎么说呢?其实我也说不清楚。因为能力有限吗?下面我们就通过例题来体会线段树的魅力所在吧。 很多学校流行一种比较的...

qq_42757965的博客 461

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之EcuM模块配置详解(上)

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之EcuM模块配置详解(上)

weixin_42412049的博客 1015

线段树总结

线段树题目总结

fuzekun的博客 435

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

线段树经典操作模板(单点更新,替换;区间更新,替换;区间求和求最值)

对于线段树的讲解此篇不再赘述,下面列出线段树应用中最常用的几种操作的代码。(具体题目未贴出,仅供有一定基础者参考代码风格) 另外,注意多组输入要写scanf("%d%d",&n,&m)!=EOF,线段树的题肯定要用c语言的输入输出,要使用字符数组,不用字符串,输入字符的时候要加getchar()吞噬空行.. (1)单点增减,区间求和: [cpp] view p

Aiphis的博客 706

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

模板——线段树 单点更新

线段树单点更新_ACM模板 题目描述 第一行,有两个正整数 N 和 M ( 0<N<=200000,0<M<5000 ),分别代表学生的数目和操作的数目。学生ID编号分别从1编到N。 第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩。 接下来有M行。每一行有一个字符 C (只取’Q’或’U’) ,和两个正整数A,B。 当C为’Q’的时候,表...

Ember_Sky 203

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

线段树基础知识+单点更新、区间更新模板

本文根据网页链接的视频进行学习,感谢up主! 线段树适用情况 题目给了一个数组(例如[1,5,4,1,6],通常数据比较多),对其中的部分区间进行多次更新,然后对部分区间进行多次查询(查询区间内的最大值/最小值/和),普通做法会超时,应使用线段树来做~ 抽象化建树 建立二叉树,把数组存到二叉树中去 (例如,) 然后从叶子结点很容易得到我们需要查询的内容,然后不断将查询的结果往上传 (...

欢迎访问方偲的博客 261

线段树--单点更新,区间求和模板

线段树学习建议视频:https://www.bilibili.com/video/av47331849 public class main { //建线段树 public static void buildTree(int arr[],int tree[],int node,int start,int end){ if(start==end){ tree[node]=arr...

点点滴滴 245

# 线段树模板——单点更新加区间求和

线段树模板——单点更新加区间求和 -模板所用题目链接:[HDU-1196 排兵布阵] (http://acm.hdu.edu.cn/showproblem.php?pid=1166) 题目描述 Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy...

SCUEC__zhazhahui的博客 275

线段树单点更新,区间最大值,zkw线段树

先留下板子,后填坑; #include <cstdio> #include <cstring> #include <cctype> #include <string> #include <set> #include <iostream> #include <stack> #include <cmath>...

不想起标题 589

线段树模板1 (单点修改)

线段树模板 1 (单点修改)

2402_86534496的博客 624

HDU 1166 敌兵布阵 (线段树 单点增减 区间求和 模板)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 中文题目,不需要翻译题意,很d

顺便A道题 3817

可持久化线段树入门(单点更新模板)

一、可持久化线段树的用处 显然从名字上可以看出来这是一种建立在线段树上的小升级。 从一个小问题可以引入: 当我们使用线段树处理一堆询问时,我们在一棵树上进行更新(如单点更新的操作),如果某一时刻突然让你把手头上的操作停下来,并且询问在你没有进行上一步操作时,树的具体数据。最容易想到的做法就是我退一步回去,把某一单点的值减掉,然后再把树拎出来给大家看。 那么如果再让你还原2步之...

Amove 478

9/21 线段树模板 单点更新 区间查询

线段树用于单点更新,区间查询的两道例题,无懒惰标记。

zhao_xin_ran的博客 319

线段树入门——区间最值,单点更新(模板)

线段树入门 区间最值,单点更新。 题目链接:https://cn.vjudge.net/problem/HDU-1754 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn=200000; const int m...

weixin_30467087的博客 126

【模板】我自己的线段树

自用线段树模板,如果你觉得有用就学习学习吧~

A's World 287
上一篇: (模板)线段树(区间双重更新,区间求和)
下一篇: POJ3368
HumveeA6
博客等级 码龄17年 12粉丝 175原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值