时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
智乃酱最近在学习势能线段树
对于势能线段树,假设线段树的节点数为

,操作数目为

。
则势能线段树则总时间复杂度为
%7D)
。
使用势能线段树时要定义势能、势能初始值(势能最大值)、0势能点。
本题中有两种可以定义势能与0势能的方法,你可以都尝试一下。
- 定义区间开根次数cnt为势能,势能初始值为势能上限=6,定义0势能点为cnt=0。
- 定义区间最大值max为势能,势能初始值为区间最大值,定义0势能点为max=1。
--------------------------------------------------------------------------------------------------------------------------
给你一个长度大小为

的正整数数组,进行

次操作,操作有下列两种。
- 给定区间
对区间中所有数字开根号向下取整,即
。 - 查询给定区间
的元素和,即求
。
输入描述:
第一行输入两个正整数
%7D)
。
接下来一行输入

个正整数
%7D)
。
接下来

行,每行输入三个正整数
%20%7D)
。
当

时,表示操作一,对

区间开根号向下取整。
当

时,表示操作二,求区间

的区间和。
输出描述:
对于每一个当
,输出区间和。
示例1
输入
复制
10 3
10 10 10 10 10 10 10 10 10 10
2 1 10
1 1 5
2 1 10