问题 B: 序列(seq)
时间限制: 1 Sec 内存限制: 128 MB
题目描述
给出一个长度为n的序列a,每次对序列进行一下的某一个操作。
输入
第一行两个整数n,q表示序列长度和操作个数。
接下来一行n个数,表示序列a。
接下来q行表示操作,其格式见题目描述。
输出
见题目描述。
样例输入
复制样例数据
5 2 1 2 3 4 5 2 1 3 1 1 5
样例输出
12
提示
修改操作后序列为:1 1 1 4 5。
这道题要对区间进行多次修改和查询,一看就要用线段树解决,一开始用的是单点查询,结果发现超时了,后来就改用区间修改,因为这道题进行的是开方操作,所以开了个结构体来表示线段树,增加了一个变量maxn来保存区间的最大值用以标记判断是否需要继续修改(因为sqrt(1)=1所以如果最大值是1的话,此区间的值就不用改了),这样就节省了时间
完整代码:
#include <cstdio>
#include <iostream>
#inc