首页 > 其他分享 >ls

ls

时间:2023-12-15 19:55:16浏览次数:12  
标签:add2% rs int sum add ls

//Charlie_
#include<bits/stdc++.h>
#define endl '\n'
#define ls (p<<1)
#define rs (p<<1|1)
#define int long long
using namespace std;
int n,a[1000001],m,P;
struct aa
{
	int l,r,sum,add,add2=1;
}t[4000040];
inline int read()
{
	int x=0;bool f=1;
	char c=getchar();
	for(;c<'0'||c>'9';c=getchar());//if(c=='-')f=0;
	for(;c>='0'&&c<='9';c=getchar())x=(x<<3)+(x<<1)+(c^48);
	return f?x:~x+1;
}
void write(int x)
{
	//if(x<0)putchar('-'),x=~x+1;
	if(x>9)write(x/10);
	putchar((x%10)^48);
}
void build(int p,int l,int r)
{
	t[p].l=l,t[p].r=r;
	if(l==r){t[p].sum=a[l];return ;}
	int mid=(l+r)>>1;
	build(ls,l,mid);
	build(rs,mid+1,r);
	t[p].sum=(t[ls].sum+t[rs].sum)%P;
}
void spread(int p)
{
	if(t[p].add||t[p].add2!=1)
	{
		t[ls].sum=((t[p].add2%P*t[ls].sum%P)%P+t[p].add%P*(t[ls].r-t[ls].l+1)%P)%P;
		t[rs].sum=((t[p].add2%P*t[rs].sum%P)%P+t[p].add%P*(t[rs].r-t[rs].l+1)%P)%P;
		t[ls].add2=(t[ls].add2%P*t[p].add2%P)%P;
		t[rs].add2=(t[rs].add2%P*t[p].add2%P)%P;
		t[ls].add=(t[ls].add%P*t[p].add2+t[p].add)%P;
		t[rs].add=(t[rs].add%P*t[p].add2+t[p].add)%P;
		t[p].add=0;
		t[p].add2=1;
	}
}
int ask(int p,int l,int r)
{
	if(l<=t[p].l&&r>=t[p].r) return t[p].sum%P;
	spread(p);
	int mid=(t[p].l+t[p].r)>>1;
	int val=0;
	if(l<=mid) val=(val+ask(ls,l,r))%P;
	if(r>mid) val=(val+ask(rs,l,r))%P;
	return val%P;
}
void change1(int p,int l,int r,int d)
{
	if(l<=t[p].l&&r>=t[p].r)
	{
		t[p].sum=t[p].sum%P+(d%P*(t[p].r-t[p].l+1))%P;
		t[p].add+=d;
		t[p].sum%=P;
		t[p].add%=P;
		return ;
	}
	spread(p);
	int mid=(t[p].l+t[p].r)>>1;
	if(l<=mid) change1(ls,l,r,d);
	if(r>mid) change1(rs,l,r,d);
	t[p].sum=(t[ls].sum+t[rs].sum)%P;
}
void change2(int p,int l,int r,int d)
{
	if(l<=t[p].l&&r>=t[p].r)
	{
		t[p].sum=t[p].sum%P*d%P;
		t[p].add2=t[p].add2%P*d%P;
		t[p].add=t[p].add%P*d%P;
		t[p].sum%=P,t[p].add2%=P,t[p].add%=P;
		return;
	}
	spread(p);
	int mid=(t[p].l+t[p].r)>>1;
	if(l<=mid) change2(ls,l,r,d);
	if(r>mid) change2(rs,l,r,d);
	t[p].sum=(t[ls].sum+t[rs].sum)%P;
}
signed main()
{
	//ios::sync_with_stdio(0);
	//cin.tie(0),cout.tie(0);
	//cin>>n>>P;
	n=read(),P=read();
	for(int i=1;i<=n;i++)a[i]=read(),a[i]%=P;//cin>>a[i];
	build(1,1,n);
	m=read();//cin>>m;
	for(int i=1;i<=m;i++)
	{
		int s,x,y,z;
		s=read(),x=read(),y=read();//cin>>s>>x>>y;
		if(s==1)
		{
			z=read();//cin>>z;
			change2(1,x,y,z);
		}
		else if(s==2)
		{
			z=read();//cin>>z;
			change1(1,x,y,z);
		}
		else write(ask(1,x,y)%P),puts(" ");//cout<<ask(1,x,y)%P<<endl;
	}
}

标签:add2%,rs,int,sum,add,ls
From: https://www.cnblogs.com/Charlieljk/p/17904105.html

相关文章

  • ABC332G Not Too Many Balls 题解
    第\(i\)种球有\(a_i\)个,共\(n\)种。第\(i\)种箱子最多共装\(b_i\)个球。共\(m\)种。第\(i\)种球在第\(j\)种箱子里至多放\(ij\)个。问所有箱子放的球数最多是多少。\(1\leqn\leq500,1\leqm\leq5e5,0\leqa_i,b_i\leq1e12\)。很容易建出网络流模型。......
  • Win11无法启动SqlServer服务问题,SqlServer服务启动1067错误
    因为SQLServer当前支持512字节和4KB的扇区存储大小。所以需要将SqlServer安装到支持4KB的磁盘。以管理员权限运行PowerShell,执行fsutilfsinfosectorinfoC:命令查看各磁盘是否支持4kb存储查找以下字段值(单位为字节)PhysicalBytesPerSectorForAtomicityPhysicalBytesPe......
  • 终结篇:==和equals有什么区别?
    ==和equals有什么区别?这个问题本身不难,但是被问到的频率很高,且大部分人的回答都不够全面,让人听了有种“恨铁不成钢”的感觉,所以今天咱们就来好好聊聊这个问题。1.典型回答对于Object来说,其equals方法底层实现就是“==”,如下JDK的Object源码如下:publicbooleanequa......
  • 如何在 macOS Sonoma 虚拟机中安装 VMware Tools
     vmware-tools VMwareTools简介VMwareTools中包含一系列服务和模块,可在VMware产品中实现多种功能,从而使用户能够更好地管理客户机操作系统,以及与客户机操作系统进行无缝交互。VMwareTools具备以下功能:将消息从主机操作系统传递到客户机操作系统。将客户机操作......
  • 容器网络Cilium:DualStack双栈特性分析
    本文分享自华为云社区《容器网络Cilium入门系列之DualStack双栈特性分析》,作者:可以交个朋友。一、关于IPV6/IPV4双栈目前很多公司开始将自己的业务由ipv4切换成ipv6,或者ipv4,ipv6共存。ipv4ipv6共存(DualStack)有两种方式:一个网卡上有两个IP地址,一个是ipv4,一个是ipv6。......
  • [Python学习笔记]制作自动将xls文件转化为xlsx文件的程序
    背景:供应商程序导出的文件是xls格式的,我需要使用PowerQuery将这些文件合并整理,但是目前没有找到可以打卡xls文件的代码,所以将xls文件转化为xlsx文件后再使用PowerQuery进行处理。思路:1.网上找到了将xls文件转化为xlsx文件的代码,将这个代码定义为一个函数去执行转换的功能......
  • extract_triton_kernels.py
    importsysfilename=sys.argv[1]withopen(filename,'r')asf:lines=f.readlines()defextract_info(line):line=line.split()name=line[0].strip()self_gpu_time=line[6].strip()num_of_calls=int(line[10].strip())......
  • 【misc】[西湖论剑 2022]mp3 --js代码,mp3隐写,lsb隐写
    附件下载下来是一个mp3文件,我这里是先试了一下MP3Stego对mp3进行空密码解密发现得到了一个txt,貌似像一个key然后kali中foremost一下mp3,发现得到一张png图片,然后再zsteg查看这张图片‘发现有zip文件,提取出来试一下然后用一开始得到的key可以解密这个加密的压缩包,得到一段加......
  • several top diagnostic tools available for trucks
    Heavy-dutyscantoolshavebecomeessentialforcommercialtruckfleetoperatorsandmaintenancetechnicians.Thesetoolsprovidedetailedinformationaboutthehealthofatruck'sengine,transmission,andothersystems,helpingfleetsoptimizeperf......
  • 当你用neovim的mason插件管理lsp config,并且配置好bash的bashls后,却没有正常工作的解
    刚开始遇到这个情况我百思不得其解,检查了neovimcheckhealth,以为是npm包管理的问题,然后删了下删了下不但没有解决还把包管理整乱了……后来发现是我没仔细看bash-language-server这个包的官方文档。。。以下是bash-language-server的官方仓库:https://github.com/bash-lsp/......