线段树板子

线段树的各种板子 很明显不是刚刚写的线段树线段树是什么呢?线段树啊… 大概就是一颗可爱的二叉树… 它的每一个节点代表着一个区间的一个性质… (比如说最大值最小值还有和之类的…) 然后因为是二叉树所以有很多奇奇怪怪的东西都来了… 至于有什么也不打算细讲。 一个点x的左儿子就是x*2呀,右儿子就是x*2+1呀 还有在线段树里面 叶儿子或者说叶节点 所代表的区间是1呀。 想象成初中历史书上的周朝等级制度图就 阅读详情
#include<bits/stdc++.h>
#define mst(a, b) memset(a, b, sizeof(a))
#define ls(k) (k<<1)
#define rs(k) (k<<1|1)
using namespace std;
struct tree {
	int l, r;
	long long sum;
	long long add;
}dt[2000001];
inline void bul(int l, int r, int k) {
	dt[k].l = l;
	dt[k].r = r;
	dt[k].add = 0;
	if(l == r) {
		int t;
		scanf("%d", &t);
		dt[k].sum = t;
		return;
	}
	int mid = (dt[k].l+dt[k].r) >> 1;
	bul(l, mid, ls(k));
	bul(mid+1, r, rs(k));
	dt[k].sum = dt[ls(k)].sum+dt[rs(k)].sum;
}
inline void pushdown(int k) {
	if(dt[k].add == 0) return;
	dt[ls(k)].add+= dt[k].add;
	dt[rs(k)].add+= dt[k].add;
	dt[ls(k)].sum+= ((long long)(dt[ls(k)].r-dt[ls(k)].l+1))*dt[k].add;
	dt[rs(k)].sum+= ((long long)(dt[rs(k)].r-dt[rs(k)].l+1))*dt[k].add;
	dt[k].add = 0;
}
inline long long query(int l, int r, int k) {
	if(dt[k].l>= l&&dt[k].r<= r) {
		return dt[k].sum;
	} 
	long long mid = (dt[k].l+dt[k].r)  >> 1;
	pushdown(k);
	if(mid>= r) {
		return query(l, r, ls(k));
	} else if(mid<l) {
		return query(l, r, rs(k));
	} else {
		return query(l, mid, ls(k))+query(mid+1, r, rs(k));
	}
}
inline void updatelen(long long l, long long r, long long val, int k) {
	tree &ans = dt[k];
	if(ans.l == l&&ans.r == r) {
		ans.add+= val;
		ans.sum+= (r-l+1)*val;
		return;
	} 
	long long mid = (ans.l+ans.r)  >> 1;
	pushdown(k);
	if(mid>= r) {
		updatelen(l, r, val, ls(k));
	} else if(mid<l) {
		updatelen(l, r, val, rs(k));
	} else {
		updatelen(l, mid, val, ls(k));
		updatelen(mid+1, r, val, rs(k));
	}
	dt[k].sum = dt[ls(k)].sum+dt[rs(k)].sum;
}

int main()
{
	int n, m;
	cin >> n >> m;
	bul(1, n, 1);
	int M = m;
	while(M--) {
		char flag;
		cin >> flag;
		if(flag == 'C') {
			int x, y, k;
			scanf("%d %d %d", &x, &y, &k);
			updatelen(x, y, k, 1);
		} else {
			long long x, y;
			scanf("%lld %lld", &x, &y);
			printf("%lld\n", query(x, y, 1));
		}
	}
	return 0;
}

保姆级教程:用ncnn把自训练的YOLOv8模型塞进Android App(附完整代码) 本文提供了一份详细的保姆级教程,指导开发者如何将自训练的YOLOv8模型通过ncnn框架部署到Android应用中。教程涵盖环境配置、模型训练与转换、Android工程集成及性能优化等全流程,并附完整代码实现,帮助开发者快速掌握移动端AI模型部署技术。 阅读详情

相关推荐

大麦APP抢票协议分析:从‘掌密网络’代码看移动端API安全防护

本文深度解析了大麦APP抢票协议的安全防护体系,重点分析了'掌密网络'代码中体现的动态签名、设备指纹和人机验证等关键技术。文章详细介绍了大麦APP如何通过多层次API安全防护应对抢票压力,包括参数加密、请求头部设计和异常处理机制,为移动应用开发者提供了安全实践建议。

weixin_28740299的博客 292

线段树简单板子+介绍

这就是经典的二分了,查询这个区间是在哪个结点处,如果这个区间能把当前结点对应的区间包含住,那么我们直接返回这个结点的值就可以了。而第三种情况就是,当你的目标区间和结点区间完全没有交集的时候,我们直接返回0就可以了。“ 这个区间的最大值,取决于 这个区间左半边的最大值,和区间右半边的最大值 ”一个区间的最大值,取决于 这个区间左半边的最大值,和区间右半边的最大值。当结点区间的左端点为目标区间的左端点的时候(结点区间的右端点是绿色处)给你一段区间,然后给你 q次询问,每次询问让你输出这个区间的最大值。

louisdlee的博客 1313

VNC Viewer建立多个图形界面,来远程访问同一个服务器(Ubuntu)

如题。目前已经有了一个VNC viewer连接,那么如果再开一个图形界面呢? 思路主要是:新建一个用户,从这个用户新建一个vnc连接,然后访问图形界面。

the Blog of 等不到天亮丶等时光 5901

线段树板子整理

线段树 参考大神的博客写的: 大神详解(写的真的很好) tree[i].l和tree[i].r分别表示这个点代表的线段的左右下标,tree[i].sum表示这个节点表示的线段和。 一颗二叉树,她的左儿子和右儿子编号分别是她*2和她*2+1, 建树 inline void build(int i,int l,int r){//递归建树 tree[i].l=l;tree[i].r=r; if(l==r){//如果这个节点是叶子节点 tree[i].sum=input[l];

m0_62792769的博客 631

DC/DC恒压输出控制原理与应用

DC/DC恒压输出控制

propor的专栏 4282

Python实现微信PC端聊天记录自动化监听与智能回复

本文详细介绍了如何使用Python实现微信PC端聊天记录的自动化监听与智能回复。通过win32api和uiautomation库,模拟人工操作,实时监控聊天窗口并抓取新消息。文章重点讲解了核心代码逻辑、环境搭建步骤,并提供了实现关键词触发自动回复的完整方案,旨在提高工作效率与信息管理自动化水平。

weixin_29092031的博客 347

线段树板子汇总

想做这个事情已经比较久啦,代码能力非常需要保持,把各个板子都重新打一遍,汇总一下,方便之后做比赛自己的常用板子。 点修改,区间求和 CodeVS 1080 #include <bits/stdc++.h> const int maxn = 1e5+100; using namespace std; int a[maxn]; struct SegmentTree{ int l,r; ...

Vicente的博客 1582

应急响应靶场练习Linux-web-2

本次应急响应靶机采用的是知攻善防实验室的Linux-2应急响应靶机靶机下载地址为:相关账户密码: root/Inch@957821.(第一个为大写的i,记住要带最后的点.)1.该攻击者的IP为192.168.20.12.攻击方式应该是通过/index.php?user-app-register上传了一个webshell,然后使用蚁剑管理webshell之后再次上传version2.php进行提权.3.攻击者修改了phpmyadmin数据库的管理员密码。

tddkett的博客 2802

线段树是一定要会线段树的 。线段树的精髓 ——板子+作用+详细注释+内容

一:为什么需要线段树? 题目1: 10000个正整数,编号从1到10000,用A[1],A[2],A[10000]表示。 修改:1.将第L个数增加C (1 &lt;= L &lt;= 10000) 统计:1.编号从L到R的所有数之和为多少? 其中1&lt;= L &lt;= R &lt;= 10000. 上面的问题就是典型的线段树点修改。 线段树先将区间[1..10000]分成不超过4*10...

小宫主的博客 1480

深度伪造检测实战:轻量级频域特征 pipeline 部署指南

深度伪造检测(deepfake detection)是多媒体内容安全的核心技术,其本质是通过建模生成式篡改在像素与频域留下的微弱异常痕迹。传统端到端大模型虽在标准数据集上表现优异,却因训练域与真实场景失配、计算开销高、缺乏可解释性而难以落地。本文聚焦于工程可复现的实践路径,提出‘人脸定位→频域伪造特征提取(Xception-FCN + Frequency-Aware Masking)→轻量分类决策’三段式解耦架构,兼顾精度、延迟与可解释性。该方案已在边缘设备(Jetson Orin NX)实现单帧<48ms

weixin_33437929的博客 309

uniapp [全端兼容] - 详细实现全局修改设置字体大小功能效果,统一修改页面字号字体大小,一键改变字号整个项目立即生效,大中小字号预设、老年人大字模式场景,uniApp全平台兼容控制页面字号大小

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,修改字体大小,一键调整UniApp字体大小,实时改变不用刷新,动态设置字体大小,uniapp全局修改字体字号大小,如何控制全局字号,可调整显示的字体,全项目生效,老年人大字模式,改变所有页面的字体,全局设置字体大小,实现小中大的字体切换,设置改变全局字体大小功能,如何做到全平台兼容,H5APP实现全局字体大小调整,不兼容报错,用户设置字号,全局设置应用字体大小,大中小字体修改,页面设置page-me

🏆 前端领域优质创作者 1万+

【模板】线段树板子

【洛谷日报#209】线段树分治总结 线段树分治是用线段树的分治性维护时间区间,它可以支持撤销操作、或者说维护了一个操作影响的时间区间 那些年我用线段树做过的题目: 查区间第k小 求区间最大值、和 给一段区间的数×k\times k×k、给一段区间的数+k+k+k - P2023 [AHOI2009]维护序列 · 线段树 统计区间内不同的数的个数 - P1972 [SDOI2009]HH的项链·...

Yubing792289314的博客 423

【SpringBoot 4.x 第70节】夯爆了,企业级 API 设计规范落地:状态码、错误码、接口文档与兼容性(超详解)!

🏆 本文收录于 《滚雪球学 Spring Boot 4.x》 专栏。本专栏面向 有一定 Java 基础,但尚未系统学习 Spring Boot 的读者,采用“滚雪球式学习法”:先跑通、再理解、再重构、再上线,带你从第一个 Hello API 开始,逐步完成一个可部署、可监控、可扩展的后端项目。

**My Coding Family** 131

线段树普通板子(过几天补具体讲解)

讲解还是比较麻烦的,后续会补充,可以先关注一下。

m0_71761904的博客 266

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

线段树基础板子

线段树最基础板子题 B - Multiply game Tired of playing computer games, alpc23 is planning to play a game on numbers. Because plus and subtraction is too easy for this gay, he wants to do some multiplication in a number sequence. After playing it a few times, he has

Little_Match_Boy的博客 227

精雕软件(JDpaint) 5.5 绿色版

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

树状数组/线段树/动态开点线段树(板子整理)

树状数组/线段树/动态开点线段树(板子整理)

小衣同学的博客 822

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

线段树 递归 板子

题目:HDU 1166 #include <iostream> #include<cstring> #define max 100007 #define ls l,m,rt<<1 #define rs m+1,r,rt<<1|1 using namespace std; int Sum[max<<2]; int Add[max&l...

qq_41953357的博客 177

线段树1板子 区间加

类的构造函数写在类最后了,本板子没有将左右下标封装到节点中,而是实时计算的。

JK01WYX的博客 849

线段树基础板子题

在选拔赛补题时被线段树虐哭,然后一直想学线段树又一直学不下去,这次再来学一学吧!希望线段树别再虐孩子了。 1.敌兵布阵 HDU - 1166 int t,n,a[50010],tree[50005*4];//tree要开a的4倍 char s[10]; //建树 void build(int node,int l,int r) { if(l==r) { tree[node]=a[l]; return; } int mid=(l+r)/2;

weixin_50935546的博客 294
上一篇: 超神的质数判断
下一篇: 最大流
YLWangcpp
博客等级 码龄8年 2粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值