C T H(下)

\(\mathcal{6.}\)

$\ \ \ \ \ \ \ $CTH 自己知道不能和他们谈天,便只好向孩子说话。

$\ \ \ \ \ \ \ $有一回对我说道,“你写过程序么?”

$\ \ \ \ \ \ \ $我略略点一点头。

$\ \ \ \ \ \ \ $他说,“写过,……我便考你一考。数据结构里的线段树,怎样在实现单点修改和区间求和?”

$\ \ \ \ \ \ \ $我想,讨饭一样的人,也配考我么?便回过脸去,不再理会。

$\ \ \ \ \ \ \ $ CTH 等了许久,很恳切的说道,“不会罢?……我教给你,记着!这些模板应该记着。将来做教练的时候,混饭要用。”

$\ \ \ \ \ \ \ $我暗想我和教练的等级还很远呢,而且我们教练也从不讲线段树;又好笑,又不耐烦,懒懒的答他道,“谁要你教,不就是线段树将每个长度不为 1 的区间划分成左右两个区间递归求解吗?”

$\ \ \ \ \ \ \ $ CTH 显出极高兴的样子,将两个指头的长指甲敲着柜台,点头说,“对呀对呀!……线段树有四样写法,你知道么?包括线段树,可持久化线段树,动态开点,以及标记永久化。你的这个办法不好,有很多冗余,万一有人写错了,也不好追查责任,我写给你看,你看我的代码,优美极了”:

#include<bits/stdc++.h>
using namespace std;
int n,m;
const int MAX=1e5+10;
int a[MAX];
struct node{int l,r,max,sum;
}tree[MAX<<2];
int lson(int x) 
{return x << 1;	
}
int rson(int x) 
{return x<<1|1;
}
void build(int rt,int l,int r)
{tree[rt].l=l;tree[rt].r=r;if(l==r){tree[rt].sum=tree[rt].max=a[l];return;}int mid=(l+r)>>1;build(lson(rt),l,mid);build(rson(rt),mid+1,r);tree[rt].sum=tree[lson(rt)].sum+tree[rson(rt)].sum;tree[rt].max=max(tree[lson(rt)].max,tree[rson(rt)].max);
}
void update(int rt,int pos,int v)
{//cout<<'#';if(tree[rt].l==tree[rt].r){tree[rt].sum=tree[rt].max=v;return ;}int mid=(tree[rt].l+tree[rt].r)>>1;if(pos<=mid) update(lson(rt),pos,v);else update(rson(rt),pos,v);tree[rt].sum=tree[lson(rt)].sum+tree[rson(rt)].sum;tree[rt].max=max(tree[lson(rt)].max,tree[rson(rt)].max);
}
int query(int rt,int l,int r)
{if(l<=tree[rt].l&&tree[rt].r<=r) return tree[rt].sum;int mid=(tree[rt].l+tree[rt].r)>>1;if(r<=mid) return query(lson(rt),l,r);else if(l>mid) return query(rson(rt),l,r);else return (query(lson(rt),l,r)+query(rson(rt),l,r));
}
int main()
{cin>>n;if(n==0) {//cout<<0;return 0;}for(int i=1;i<=n;i++) cin>>a[i];build(1,1,n);cin>>m;string s;for(int i=1;i<=m;i++){//for(int i=1;i<=n;i++)cin>>s;if(s[0]=='S'){int x,y;cin>>x>>y;cout<<query(1,x,y)<<endl;}else{int x,y;cin>>x>>y;update(1,x,y+a[x]);a[x]=y+a[x];}}
}

$\ \ \ \ \ \ \ $我愈不耐烦了,努着嘴走远。写完后,CTH 向教练讨来一副模板,还想继续说些什么,见我毫不热心,便又叹一口气,显出极惋惜的样子。

\(\mathcal{7.}\)

   CTH 是这样的使人快活,可是没有他,别人也便这么过。

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

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

相关文章

ROS基础入门——实操教程

ROS新人可看ROS基础入门——实操教程前言 本教程实操为主,少说书。可供参考的文档中详细的记录了ROS的实操和理论,只是过于详细繁杂了,看得脑壳疼,于是做了这个笔记。Ruby Rose,放在这里相当合理前言:本文初编辑于2024年10月24日 CSDN主页:https://blog.csdn.net/rvdgds…

PbootCMS增加可允许上传文件类型,例如webp、mov等文件格式扩展

在PbootCMS中增加可允许上传的文件类型(例如 webp、mov 等文件格式),需要在多个地方进行配置。以下是详细的步骤: 操作步骤 1. 修改 config.php 文件 首先需要修改 config.php 文件,增加允许上传的文件类型。打开 config.php 文件打开 config.php 文件,通常位于 /config …

出现“登录失败,表单提交校验失败”,请检查服务器环境

如果出现“登录失败,表单提交校验失败”,请检查服务器环境,然后刷新页面重试,或者删除 runtime 文件夹,然后刷新页面重试。 操作步骤删除 runtime 文件夹使用 FTP 客户端或 SSH 连接到服务器。 删除 runtime 文件夹:bashcd /path/to/your/site rm -rf runtime刷新页面清除…

多次密码错误导致登录界面锁定,可以删除网站的 runtime 文件夹

如果多次密码错误导致登录界面锁定,可以删除网站的 runtime 文件夹,然后刷新页面重试。 操作步骤删除 runtime 文件夹使用 FTP 客户端或 SSH 连接到服务器。 删除 runtime 文件夹:bashcd /path/to/your/site rm -rf runtime刷新页面清除浏览器缓存。 重新访问后台登录页面扫…

红日靶机(三)笔记

VulnStack-红日靶机三 概述 相交于前边两个靶场环境,靶场三的难度还是稍难一点,有很多兔子洞,这就考验我们对已有信息的取舍和试错,以及对渗透测试优先级的判断。涉及到对数据库操作的试错,对 joomla 框架 cve 的快速学习,php 中 用到disabled_function 的 bypass ,对li…

快乐数学2勾股定理0000000

2 勾股定理 在任意一个直角三角形中,两条直角边的平方和等于斜边的平方。 a + b = ca 和 b 分别表示直角三角形的两条直角边长度。 c 表示斜边长度。我们大多数人都认为这个公式只适用于三角形和几何图形。勾股定理可用于任何形状,也可用于任何将数字平方的公式。 2.1 了解面…

信息学奥赛复赛复习11-CSP-J2020-04方格取数-动态规划、斐波那契数列、最优子结构、重叠子问题、无后效性

PDF文档公众号回复关键字:202410041 P7074 [CSP-J2020] 方格取数 [题目描述] 设有 nm 的方格图,每个方格中都有一个整数。现有一只小熊,想从图的左上角走到右下角,每一步只能向上、向下或向右走一格,并且不能重复经过已经走过的方格,也不能走出边界。小熊会取走所有经过的…

python相平面 图形

二阶非线性自治系统绘制相平面图。假设我们有一个简单的阻尼摆系统,其状态方程可以表示为: \[ dx1/dt = x2 \\dx2/dt = -cx2 - gsin(x1) \] import numpy as np import matplotlib.pyplot as plt from scipy.integrate import odeint # 定义系统的状态方程 def pendu…

帝国CMS7.2/7.5移动端/手机端/多终端访问设置图文教程

​随着PC互联网与移动互联网的不断融合、以及各类移动访问终端增加,网站移动互联越来越重要了,所以帝国CMS7.2/7.5版本在原来版本的多访问终端功能基础上,做出更多的改进,让网站多种移动访问端制作更加方便。下面我们来讲解帝国CMS7.2版本的“多终端访问功能”使用:新增网…

这可能是最全的输入法教程了

这个教程能让你打字速度更快,体验更好输入法是我们离不开的软件,如果要评选用户最常使用的工具类应用,输入法一定名列前茅。 由于输入法实在太常用了,我们往往会忽略它:我用自带的输入法就行,打几个字,用的着琢磨吗? 实则不然,输入法软件有很多,也有很多进阶用法,这…

【极客大挑战2023】- Re -点击就送的逆向题 WriteUp

这道题给了一个.s文件 解决方案有两个: 1.利用gcc编译成可执行文件,然后反编译生成伪代码 2.直接分析汇编(我不会。。。) 1.利用gcc编译成可执行文件 linux执行gcc -o 1.s 1 IDA打开,分析并编写,注意一定要在字符串末尾加上\0结束符!!!点击查看代码 #include <stdi…

day11[Lagent 自定义你的 Agent 智能体]

环境配置 开发机选择 30% A100,镜像选择为 Cuda12.2-conda。 首先来为 Lagent 配置一个可用的环境。Lagent Web Demo 使用 使用 Lagent 的 Web Demo 来体验 InternLM2.5-7B-Chat 的智能体能力 先使用 LMDeploy 部署 InternLM2.5-7B-Chat,并启动一个 API Server然后,我们在另…