【ybt】【数据结构 线段树 课过 例4】维护序列

抖音自定义卡片链接(图文链接) 抖音自定义可以自定义标题,打开链接,和展示图片 效果 主要代码 public void sendMessage(String conversationId, Object aBaseContent) throws Exception { // C233282u5.LIZIZ.LIZ().LIZIZ(LIZ).LIZ(obtain).LIZ(hLn).LIZ((AbstractC59811HHc) new H9Q()); Object HOa = ReflectionUtil 阅读详情

维护序列

题目链接:YbtOJ/Luogu


在这里插入图片描述

解题思路

线段树模板题

code

#include<iostream>
#include<cstdio>
#define int long long
using namespace std;

int n,m,mod;

struct abc{
	int s;
	int flg1,flg2;
}tree[400010];

void build(int now,int l,int r)
{
	tree[now].flg1=1;
	if(l==r)
	{
		scanf("%lld",&tree[now].s);
		return;
	}
	int mid=(l+r)/2;
	build(now*2,l,mid);
	build(now*2+1,mid+1,r);
	tree[now].s=(tree[now*2].s+tree[now*2+1].s)%mod;
}

void down(abc &now,abc &l,abc &r,int x,int y)
{
	int mid=(x+y)/2;
	l.s=(l.s*now.flg1+(mid-x+1)*now.flg2)%mod;
	r.s=(r.s*now.flg1+(y-mid)*now.flg2)%mod;
	l.flg1=(l.flg1*now.flg1)%mod;
	l.flg2=(l.flg2*now.flg1+now.flg2)%mod;
	r.flg1=(r.flg1*now.flg1)%mod;
	r.flg2=(r.flg2*now.flg1+now.flg2)%mod;
	now.flg1=1;
	now.flg2=0;
}

void change1(int now,int l,int r,int x,int y,int w)
{
	if(x<=l&&r<=y)
	{
		tree[now].s=(tree[now].s*w)%mod;
		tree[now].flg1=(tree[now].flg1*w)%mod;
		tree[now].flg2=(tree[now].flg2*w)%mod;
		return;
	}
	int mid=(l+r)/2;
	down(tree[now],tree[now*2],tree[now*2+1],l,r);
	if(x<=mid)
		change1(now*2,l,mid,x,y,w);
	if(y>mid)
		change1(now*2+1,mid+1,r,x,y,w);
	tree[now].s=(tree[now*2].s+tree[now*2+1].s)%mod; 
}

void change2(int now,int l,int r,int x,int y,int w)
{
	if(x<=l&&r<=y)
	{
		tree[now].s=(tree[now].s+(r-l+1)*w)%mod;
		tree[now].flg2=(tree[now].flg2+w)%mod;
		return;
	}
	int mid=(l+r)/2;
	down(tree[now],tree[now*2],tree[now*2+1],l,r);
	if(x<=mid)
		change2(now*2,l,mid,x,y,w);
	if(y>mid)
		change2(now*2+1,mid+1,r,x,y,w);
	tree[now].s=(tree[now*2].s+tree[now*2+1].s)%mod; 
}

int fd(int now,int l,int r,int x,int y)
{
	if(x<=l&&r<=y)
		return tree[now].s;
	int mid=(l+r)/2,ans=0;
	down(tree[now],tree[now*2],tree[now*2+1],l,r);
	if(x<=mid)
		ans=(ans+fd(now*2,l,mid,x,y))%mod;
	if(y>mid)
		ans=(ans+fd(now*2+1,mid+1,r,x,y))%mod;
	return ans;
}

signed main()
{
	cin>>n>>mod;
	build(1,1,n);
	cin>>m;
	while(m--)
	{
		int k,t,g,c;
		scanf("%lld%lld%lld",&k,&t,&g);
		if(k==1)
		{
			scanf("%lld",&c);
			change1(1,1,n,t,g,c);
		}
		if(k==2)
		{
			scanf("%lld",&c);
			change2(1,1,n,t,g,c);
		}
		if(k==3)
			cout<<fd(1,1,n,t,g)<<endl;
	}
}
Android性能分析深度指南:Perfetto工具全面解析 本文深入探讨Android性能优化工具Perfetto的应用与实践。作为Google推出的新一代追踪系统,Perfetto整合了CPU调度、内存分配、电池状态等多维度分析功能,通过高性能数据处理和可视化界面帮助开发者定位性能瓶颈。文章系统介绍了Perfetto的架构原理、配置方法和核心功能,包括CPU性能分析、内存泄漏检测等关键技术。通过电商应用卡顿优化的实战案例,展示了如何利用数学建模(如帧时间公式$T_{\text{render}}\leq16.67\text{ms}$)指导性能调优。 阅读详情

相关推荐

Pascal Context数据集实战:从安装到格式转换的完整指南

本文提供了Pascal Context数据集的完整实战指南,从安装配置到格式转换的详细步骤。Pascal Context是计算机视觉领域重要的语义分割数据集,包含540个精细标注类别。文章涵盖数据集下载、环境配置、预处理技巧和常见问题解决方案,帮助开发者高效利用这一数据集进行场景理解任务。

weixin_30216561的博客 616

[AHOI 2009]维护序列

线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)。而未优化的空间复杂度为2N,实际应用时一般还要开4N的数组以免越界,因此有时需要离散化让空间压缩。

ahwhQZY的博客 372

【Fluent】太阳辐射模型—Solar Ray Tracing

一、引言Fluent提供了一个太阳能负载模型,可用于计算进入计算域的太阳光线的辐射效应。该模型可以分为:太阳光线追踪和太阳辐照。其中太阳辐照需要使用DO或MC模型,直接向辐射模型提供外光束方向和强度参数。太阳光线追踪不限制辐射模型,可以独立于辐射方程使用,甚至可以在辐射模型off的情况下使用。本文主要介绍太阳光线追踪模型。该模型非常适用于以下领域汽车气候控制 (ACC) 应用建筑物中的人体热舒适建模应用该模型使用着色算法进行太阳光线追踪。光线会透过半透明的面加载在照射面上。

a5567899的博客 7588

维护序列

维护序列维护序列维护序列 题目链接:luogu 2023 题目 老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成。 有长为N的数列,不妨设为a1,a2,…,aN 。有如下三种操作形式: 把数列中的一段数全部乘一个值; 把数列中的一段数全部加一个值; 询问数列中的一段数的和,由于答案可能很大,你只需输出这个数模P的值。 输入 第一行两个整数NNN和PPP。 第二行含有NNN个非负整数...

欢迎您的光顾awa 1286

RGB接口电容触摸屏驱动(二)接口与时序说明

RGB接口电容触摸屏驱动(二)接口与时序说明

杰克拉力船长个人博客 4920

WSL2下用QEMU模拟ARM开发板:从编译uboot到调试全流程(附常见错误解决)

本文详细介绍了在WSL2环境下使用QEMU模拟ARM开发板的完整流程,包括uboot编译、内核调试等关键步骤。通过QEMU模拟vexpress-a9开发板,开发者可以高效搭建嵌入式开发环境,解决常见错误并提升开发效率。

solidity8miner的博客 286

【Ybtoj 第17章例4】维护序列【线段树】

解题思路 我们考虑用懒标记,当对一个区间打标记时要保证以先乘后加的形式,mul表示乘多少,pul表示加多少,sum表示区间和。 下传标记时, sum[lson]∗=mul[fa],sum[rson]∗=mul[fa],sum[lson]+=pul[fa]∗(mid−l+1),sum[rson]+=pul[fa]∗(r−mid)sum[lson]*=mul[fa],sum[rson]*=mul[fa],sum[lson]+=pul[fa]*(mid-l+1),sum[rson]+=pul[fa]...

在人间贩卖声音 197

51单片机也能玩转GC9A01彩屏?超详细移植指南与性能优化技巧

本文详细介绍了如何在51单片机上高效驱动GC9A01彩屏,包括硬件连接优化、SPI模拟驱动、内存管理策略及高级刷新技术。通过分段缓冲、颜色压缩和差异化刷新等技巧,显著提升显示性能,使51单片机也能流畅运行240x240分辨率的彩色TFT屏幕。

hp777的博客 190

【Ybt OJ】[数据结构 第4章] 线段树 [后半章]

「「「数据结构」」」第444章 线段树(((后222题))) 目录: D.维护序列 E.字符串排序 大家好 我是个菜鸡 我非常喜欢暴力数据结构 于是我用线段树过了这些题( D.D.D. 例题444 维护序列 洛谷link1link1link1 洛谷link2link2link2 分析: 和例题222差不多 就是加了个乘操作 但要注意 维护lazylazylazy标记 和下传时 先乘再加 因为 如果维护的是aaa lazylazylazy标记有+c+c+c和×b\times b×b 但是 a×b+c≠(

绫 181

告别IMEI!手把手教你用UUID实现Android设备唯一标识(兼容Android 10-13)

本文详细探讨了在Android 10及以上版本中,如何构建合规且高可用的设备唯一标识方案以替代被限制访问的IMEI。文章深入分析了Android设备标识符的演变,并提供了基于UUID/GUID的完整实现策略,包括生成算法、多级持久化存储方案(如MediaStore)、权限处理以及版本兼容性实践,帮助开发者应对Android 10-13的隐私政策变化。

weixin_28339967的博客 574

最大似然估计、梯度下降、EM算法、坐标上升

主要讲解的是机器学习中参数学习算法之间的区别,以及应用的场景。 最大似然估计: 其中目标函数是对数似然函数。为了求目标函数取最大值时的theta。有两个关机键步骤,第一个是对目标函数进行求导,第二个是另导数等于0,求解后直接得到最优theta。两个步骤缺一不可。 梯度下降: 对目标函数进行求导,利用导函数提供的梯度信息,使参数往梯度下降最快的方向移动一小步,来更新参数。为什

tzl2093的博客 5141

【YBTOJ】维护序列

参考线段树2 codecodecode #include<iostream> #include<cstdio> using namespace std; long long n , P, m; struct node { long long l, r, w, flag1, flag2; }a[4001000]; void build(long long k, long long l, long long r) { a[k].l=l, a[k].r=r; a[k].fla.

ha 168

全球首发48V架构的Cybertruck,到底牛在哪?| 深扒特斯拉高压系统架构

特斯拉Cybertruck作为全球首款标配48V架构的量产车,在电气系统架构上进行了多项创新。首先,它采用以太网连接高压控制器与后域控制器,提升了数据传输效率和智能化水平。其次,Cybertruck引入了Pyro烟火断开装置,用于碰撞时快速断开电池连接,提高安全性。在电流监测方面,特斯拉既保留了传统的Shunt分流器技术,又引入了更先进的磁通门电流传感器,后者具有无温漂、完全隔离等优势。48V供电系统在降低电流损耗方面表现优异,但也面临电弧风险、盐水腐蚀等挑战。Cybertruck的48V系统通过PCS供电

weixin_43199439的博客 1348

【ybt高效进阶4-4-4】【luogu P2023】维护序列

给你一个序列,要你维护三个操作。 把一个区间的数乘一个值或加一个值,还有区间求和。

欢迎您的光顾awa 179

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【YBT2023寒假Day7 C】查区间(线段树套线段树)

给你一个序列,要你维护两种操作,区间取 min 和区间求第 k 小。

欢迎您的光顾awa 501

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【YBT2023寒假Day7 A】出题人(线段树优化DP)

有一个序列,你要把它分成若干份,每一份的值的和不超过 m,而且每一段最大值的和最小。 输出每段最大值和的最小值。

欢迎您的光顾awa 241

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

《信息学奥赛一本通 提高篇》 第四部分 数据结构 第3章 线段树

线段树从零开始 线段树从零开始_岩之痕-优快云博客_线段树从0开始 线段树入门 http://blog.jobbole.com/105886/ 线段树 线段树_百度百科 手把手教你写线段树 手把手教你写线段树_单精度的梦-优快云博客_线段树怎么写 一步一步理解线段树 一步一步理解线段树 - tenos - 博客园 线段树(由浅入深),详解!! 线段树(由浅入深),详解!!_EQSAN的博客-优快云博客 线段树详解 超全的线段树 - 比特飞流 - 博客园

青少年趣味编程 963

【ybt高效进阶4-4-2】区间查改

给你一个序列,要你支持区间加值和区间求和两个操作。

欢迎您的光顾awa 171

【ybt高效进阶4-4-3】【luogu P4513】公园遛狗 / 小白逛公园

给你一个序列,要维护两个操作。 单点修改和在一个区间中找权值最大的子区间的权值。

欢迎您的光顾awa 194

【ybt高效进阶4-4-1】求区间和

求区间和【ybt高效进阶4-4-1】 题目大意: 让你维护一个数组(序列),让你支持单点修改,区间查询的操作。 思路: 本题最舒服的解法是树状数组,但此处我们当成线段树的板子。 直接上模板线段树。 代码: #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<stack> #include&lt

天空之心 173

信息学奥赛一本通 1550:花神游历各国 | 洛谷 P4145 上帝造题的七分钟 2 / 花神游历各国

‌《花神游历各国》解题大纲‌ ‌题目分析‌ 题目链接与背景介绍(YBT 1550与洛谷P4145)。 核心操作:区间开平方(向下取整),区间求和。 ‌关键观察‌ 数值特性:任何数最多6次开平方后变为1,后续操作无效。 优化思路:通过维护区间最大值,跳过全1区间的无效修改。 ‌算法设计‌ ‌线段树结构‌:存储区间和与最大值。 ‌修改策略‌:递归修改时,若区间最大值≤1则剪枝;否则继续分解到单点更新。 ‌复杂度分析‌ 单点修改最多6次,总复杂度为O(n log n),适用于1e5数据规模。

君义NOIP的博客 1212

【ybt金牌导航4-1-2】【luogu P2713】合并游戏 / 罗马游戏

有一个序列,一开始各自在各自的集合中。 你要支持两个操作,把两个数所在的集合合并,求出一个数所在集合中最小的数并把它删除。 如果询问的数已经被删除,那就直接跳过。(求最小数就还要输出 0)

欢迎您的光顾awa 242

【ybt2021.11.12】T2 字典之序

T2 字典之序 link 解题思路 考虑贪心。 在选每个字母的时候要保证它的后面有所有没有出现过的字母。 每次从后往前找到直到每个未出现过字母都存在,记录下标。 在上一次操作的下标后一位到找到的下标之间取最小的字母。 可以保证这样找到的字符串字典序最小。 code #include<iostream> #include<cstring> #include<cstdio> #include<string> using namespace std; stri

你...你不要过来啊!!! 780

【ybt】【树形DP】【例题2】结点覆盖

结点覆盖 LinkLinkLink 解题思路 这是一道树形DP。 设 fi,0f_{i,0}fi,0​ 表示以 iii 为根的子树全部被覆盖,iii 的父亲被选的最小值。 fi,1f_{i,1}fi,1​ 表示 iii 被选的最小值。 fi,2f_{i,2}fi,2​ 表示 iii 的儿子被选在最小值。 code #include<iostream> #include<cstdio> using namespace std; int n; int a[2010]; int f[

你...你不要过来啊!!! 543

【ybt】【数据结构 RMQ 课过 例3】与众不同

与众不同 题目链接:YbtOJ 解题思路 设 lastilast_ilasti​ 表示 iii 上一次出现的位置。 设 preipre_iprei​ 表示以 iii 结尾的最长完美序列的启示位置,显然 prei=max⁡(prei−1,lastai)pre_i=\max(pre_{i-1},last_{a_i})prei​=max(prei−1​,lastai​​) 。 我们先处理出 lastlastlast 和 preprepre ,然后二分出一个 lenlenlen,lenlenlen 的左边可以直

你...你不要过来啊!!! 517

【冲刺 NOIP2022 模拟赛 B 组 Day5】B. 选择人员

【冲刺 NOIP2022 模拟赛 B 组 Day5】B. 选择人员

你...你不要过来啊!!! 461
上一篇: 【ybt】【数据结构 线段树 课过 例3】小白逛公园
下一篇: 【ybt】【数据结构 倍增 课过 例1】查找编号
SSL_GYX
博客等级 码龄7年 103粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值