势能线段树模板题一
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

智乃酱最近在学习势能线段树
对于势能线段树,假设线段树的节点数为,操作数目为
则势能线段树则总时间复杂度为
使用势能线段树时要定义势能、势能初始值(势能最大值)、0势能点。

本题中有两种可以定义势能与0势能的方法,你可以都尝试一下。
  1. 定义区间开根次数cnt为势能,势能初始值为势能上限=6,定义0势能点为cnt=0。
  2. 定义区间最大值max为势能,势能初始值为区间最大值,定义0势能点为max=1。
--------------------------------------------------------------------------------------------------------------------------
给你一个长度大小为的正整数数组,进行次操作,操作有下列两种。
  1. 给定区间对区间中所有数字开根号向下取整,即
  2. 查询给定区间的元素和,即求

输入描述:

第一行输入两个正整数
接下来一行输入个正整数
接下来行,每行输入三个正整数
时,表示操作一,对区间开根号向下取整。
时,表示操作二,求区间的区间和。

输出描述:

对于每一个当,输出区间和。
示例1

输入

复制
10 3
10 10 10 10 10 10 10 10 10 10
2 1 10
1 1 5
2 1 10

输出

复制
100
65