P3373 【模板】线段树 2

news2024/10/6 10:31:58

题目

在这里插入图片描述

思路

作为线段树模板题,这题主要考查了对lazytag以及先乘后加的使用,
因为是模板,所以这里证明略

代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=1e5+5;
int n,m,p;
int a[maxn];
struct node{
	int v,mul,add;
}st[maxn*4];
//初始化
void init(int root,int l,int r){
	st[root].mul=1,st[root].add=0;
	if(l==r) st[root].v=a[l];
	else { int mid=l+r>>1;init(root*2,l,mid),init(root*2+1,mid+1,r),st[root].v=st[root*2].v+st[root*2+1].v; }
	st[root].v%=p;
	return;
}
void pushdown(int root,int l,int r){
    int mid=(l+r)/2;
    st[root*2].v=(st[root*2].v*st[root].mul+st[root].add*(mid-l+1))%p,st[root*2+1].v=(st[root*2+1].v*st[root].mul+st[root].add*(r-mid))%p,st[root*2].mul=(st[root*2].mul*st[root].mul)%p,st[root*2+1].mul=(st[root*2+1].mul*st[root].mul)%p,st[root*2].add=(st[root*2].add*st[root].mul+st[root].add)%p,st[root*2+1].add=(st[root*2+1].add*st[root].mul+st[root].add)%p,st[root].mul=1,st[root].add=0;
    return;
}
//加
void ud1(int root,int stdl,int stdr,int l,int r,int k){
    if(r<stdl||stdr<l) return;
    if(l<=stdl&&stdr<=r) { st[root].v=(st[root].v*k)%p,st[root].mul=(st[root].mul*k)%p,st[root].add=(st[root].add*k)%p;return; }
    pushdown(root,stdl,stdr);
    int mid=stdl+stdr>>1;
    ud1(root*2,stdl,mid,l,r,k),ud1(root*2+1,mid+1,stdr,l,r,k);
    st[root].v=(st[root*2].v+st[root*2+1].v)%p;
    return;
}
//乘
void ud2(int root,int stdl,int stdr,int l,int r,int k){
    if(r<stdl||stdr<l) return;
    if(l<=stdl&&stdr<=r){
		st[root].add=(st[root].add+k)%p,st[root].v=(st[root].v+k*(stdr-stdl+1))%p;
        return;
    }
    pushdown(root,stdl,stdr);
    int mid=stdl+stdr>>1;
    ud2(root*2,stdl,mid,l,r,k),ud2(root*2+1,mid+1,stdr,l,r,k);
    st[root].v=(st[root*2].v+st[root*2+1].v)%p;
    return;
}
//查询区间和
int query(int root,int stdl,int stdr,int l,int r){
    if(r<stdl||stdr<l) return 0;
    if(l<=stdl&&stdr<=r) return st[root].v;
    pushdown(root,stdl,stdr);
    int mid=(stdl+stdr)/2;
    return (query(root*2,stdl,mid,l,r)+query(root*2+1,mid+1,stdr,l,r))%p;
}
signed main(){
	cin>>n>>m>>p;
    for(int i=1;i<=n;i++) cin>>a[i];
    init(1,1,n);
    while(m--){
        int if_case;cin>>if_case;
        int x,y,k;
        switch (if_case){
        	case 1:cin>>x>>y>>k;ud1(1,1,n,x,y,k);break;
        	case 2:cin>>x>>y>>k;ud2(1,1,n,x,y,k);break;
        	case 3:cin>>x>>y;cout<<query(1,1,n,x,y)<<endl;break;
		}
    }
    return 0;
}

end

完结撒花

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

输出菱形的程序填空题补充代码问题

ABBBCCCCCDDDDDDDEEEF 如上图所示&#xff0c;补充以下代码&#xff0c;输出这个图形。 #include<stdio.h> #define N 7//图案共N行 #define L (80-N)/2//整个图案据屏幕左边L列&#xff0c;使其居中 int main() {char cA;int i,j,p;for(i1;i<N;i, ){if(i<(…

(12)理解委托,反射,Type,EvenInfo,插件, 组合枚举,BindingFlags,扩展方法及重载,XML认识

一、复习委托事件 1、委托复习。 private delegate int MyDelegate(int a, int b); //1.定义委托类型private static void Main(string[] args){MyDelegate md new MyDelegate(AddDelegate);//2.声明委托变量int result md(1, 2);//3.调用委托Console.WriteLine(result);Cons…

运维作业4

一.简述静态网页和动态网页的区别。 静态页面资源特征 1. 处理文件类型&#xff1a;如.html、jpg、.gif、.mp4、.swf、.avi、.wmv、.flv等 2. 地址中不含有问号"&#xff1f;"或&等特殊符号。 3. 保存在网站服务器文件系统上的&#xff0c;是实实在在保存在服务器…

十进制、八进制、二进制、十六进制

十进制 每一位都有 0~9 十个数码&#xff0c;逢十进一 二进制 每一位仅有 0 和 1 两个数码&#xff0c;逢二进一 八进制 每一位都有 0~7 八个数码&#xff0c;逢八进一 十六进制 每一位都有 0~9、A(10)、B(11)、C(12)、D(13)、E(14)、F(15)&#xff0c;十六个数码&#…

路由动态选择协议之RIP(路由信息协议)

软件&#xff1a;cicso packet tracer 8.0 拓扑图&#xff1a;路由器&#xff1a;Router-PT、连接线&#xff1a;Serial DTE、连接口&#xff1a;Serial口 1、配置基础ip R1配置&#xff1a;虚拟接口——1.1.1.1&#xff1b;S3/0——192.168.1.1 R1(config)#int s3/0 R1(con…

SQL Server数据库 -- 索引与视图

文章目录 一、索引 聚集索引非聚集索引二、视图三、自定义函数 标量函数表值函数四、游标五、总结 前言 在学习完创建库表、查询等知识点后&#xff0c;为了更加方便优化数据库的存储和内容&#xff0c;我们需要学习一系列的方法例如索引与视图等等&#xff0c;从而使我们更加…

快手头部主播合体,二驴祁天道直播首秀销售额破亿

2023年刚刚过半&#xff0c;直播江湖突然生变。 快手头部娱乐主播「二驴」与快手户外主播第一人「祁天道」宣布“合体”&#xff0c;两者加总的粉丝量接近1亿&#xff0c;又一个“超级网红IP”诞生。 ▲图源&#xff1a;二驴的、祁天道快手截图 从白手起家的草根&#xff0c;…

语义检索系统【四】:基于ERNIE-Gram的Pair-wise和基于RocketQA的CrossEncoder训练的单塔模型实现数据精排

搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术…

启动Flink显示初始化状态怎么解决?

启动Flink显示初始化状态怎么解决&#xff1f; Flink On Yarn模式 问题 flnk任务在跑的过程中&#xff0c; 有时候任务停掉了 &#xff0c;不过我有 定时任务&#xff0c;可以把失败的flink任务拉起来&#xff0c;但是因为最新的checkpoint做失败了&#xff0c;导致脚本无法拉…

【leetcode经典简单题】自食用||删除链表中倒数第k个结点

step by step. 题目&#xff1a; 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&a…

C# Blazor 学习笔记(8):row/col布局开发

文章目录 前言相关文章代码row和col组件B_rowB_col结构 使用 前言 可能是我用的element ui和 uView这种第三方组件用的太多了。我上来就希望能使用这些组件。但是目前Blazor目前的生态其实并不完善&#xff0c;所以很多组件要我们自己写。 我们对组件的要求是 我们在组件化一共…

人工智能科研经验——人工智能顶会审稿人科研方法分享

人工智能顶会审稿人科研方法分享 前言 1、本教程主要记录人工智能科研方面的经验积累。 Question&#xff1a;科研是什么&#xff1f; Anwser&#xff1a;科研是【进行观察—>定义问题—>研究问题—>发展假设—>设计实验—>收集和分析结果—>构建结论—>进…

微服务架构的模式介绍

1.微服务架构模式方案 用Scale Cube方法设计应用架构&#xff0c;将应用服务按功能拆分成一组相互协作的服务。每个服务负责一组特定、相关的功能。每个服务可以有自己独立的数据库&#xff0c;从而保证与其他服务解耦。 1.1 聚合器微服务设计模式 聚合器调用多个服务实现应用程…

74HC245芯片的用途

双 P 沟道增强型 MOS 管---D74HC245 目录 双 P 沟道增强型 MOS 管---D74HC245 概述与特点 主要特性 应用领域 管脚定义 管脚定义说明 逻辑框图 直流电气参数 直流特性 交流特性 封装 概述与特点 &#xfffd; 概述 D74HC245 是一种三态输出、八路信号收发器,主要应用…

【安装Tomcat,web站点部署】

Tomcat部署 第一种安装 yum install tomcat.noarch -y yum install tomcat-webapps.noarch -y #启动脚本 [rootlocalhost ~]# systemctl start tomcat这时可以通过IP地址端口访问 第二种安装 点击此处找到apache-tomcat-8.5.70.tar.gz 官网下载JDK #先安装JDK [rootlocalh…

Android安卓实战项目(5)---完整的健身APP基于安卓(源码在文末)可用于比赛项目或者作业参考中

Android安卓实战项目&#xff08;5&#xff09;—完整的健身APP&#xff08;源码在文末&#x1f415;&#x1f415;&#x1f415;&#xff09;可用于比赛项目 一.项目运行介绍 1.大致浏览 【bilibili视频】 https://www.bilibili.com/video/BV1uX4y177iR/? &#xff08;1&…

MySQL语法2

DQL语句介绍 DQL是数据查询语言&#xff0c;用来查询数据库中表的记录 DQL-基本查询语句 SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段列表 HAVIMG 分组后条件列表 ORDER BY 排列字段列表 LIMIT 分页参数 讲解过程&#xff1a;基本查询、条件查询…

Dockerfile构建apache镜像

创建工作目录 [rootlocalhost ~]# mkdir tomcat [rootlocalhost ~]# cd tomcat/ 编写配置文件 [rootlocalhost tomcat]# cat Dockerfile #基于的基础镜像 FROM centos:7 #镜像作者信息 MAINTAINER liu <wewed163.com> #安装相关依赖包 RUN yum install -y wget net-…

SpringBoot之logback-spring.xml详细配置

《logback官网》 各种指导文件&#xff0c;有空自己去看&#xff0c;比如&#xff1a;我们需要调整的是布局&#xff0c;直接看Layouts。 pom.xml <!-- 环境配置 --><profiles><profile><id>dev</id><properties><spring.profiles.a…