uoj 228 基础数据结构练习题

本文探讨了一道涉及数据结构线段树的难题,通过巧妙利用开方特性,实现了高效的区间更新与查询操作。文章详细介绍了如何在特定条件下简化问题,以及如何处理最值差变化,避免无限递归。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Description

$ sylvia 是一个热爱学习的女孩子,今天她想要学习数据结构技巧。 $

$ 在看了一些博客学了一些姿势后,她想要找一些数据结构题来练练手。于是她的好朋友九条可怜酱给她出了一道题。 $

$ 给出一个长度为n的数列A,接下来有m次操作,操作有三种 $
$ 1.对于所有的i\in[l,r],将A_i变成A_i+x. $
$ 2.对于所有的i\in[l,r],将A_i变成\lfloor \surd{A_i} \rfloor. $
$ 3.对于所有的i\in[l,r],询问A_i的和. $

$ 作为一个不怎么熟练的初学者,sylvia 想了好久都没做出来。而可怜酱又外出旅游去了,一时间 联系不上。于是她决定向你寻求帮助:你能帮她解决这个问题吗。 $

Input

$ 第一行两个数:n,m。 $
$ 接下来一行 n个数 A_i。 $
$ 接下来 m 行中,第 i 行第一个数 ti 表示操作类型: $
$ 若 ti=1,则接下来三个整数 li,ri,xi,表示操作一。 $
$ 若 ti=2,则接下来三个整数 li,ri,表示操作二。 $
$ 若 ti=3,则接下来三个整数 li,ri,表示操作三。 $

Output

对于每个询问操作,输出一行表示答案。

Sample1

Input
5 5
1 2 3 4 5
1 3 5 2
2 1 4
3 2 4
2 3 5
3 1 5

Output
5
6

Sample2

见样例数据下载。

Hints

测试点编号nn 的规模mm 的规模其他约定
1n3000n≤3000m3000m≤3000 
2
3
4n100000n≤100000m100000m≤100000数据随机生成
5
6ti1ti≠1
7
8 
9
10

对于所有数据,保证有 1lirin,1Ai,xi105

Time Limit:1s

Memory Limit:256MB

Download

样例数据下载

转载于:https://www.cnblogs.com/charlotte-o/p/7628932.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值