#include<iostream>
#include<cstdio>
#include<cmath> using namespace std; const int maxn=1e6+;
struct node
{
int l,r;
long long sum,maxx;
}tree[maxn];
long long n;
long long num[maxn];
long long pushup(long long x)
{
tree[x].sum=tree[x<<].sum+tree[x<<|].sum;
if(tree[x<<].maxx>tree[x<<|].maxx)
{
tree[x].maxx=tree[x<<].maxx;
}
else
{
tree[x].maxx=tree[x<<|].maxx;
}
}
void build(long long x,long long l,long long r)
{
tree[x].l=l;
tree[x].r=r;
if(l==r)
{
tree[x].sum=tree[x].maxx=num[l];
return ;
}
int mid=(l+r)>>;
build(x<<,l,mid);
build(x<<|,mid+,r);
pushup(x);
}
void modify(long long x,long long l,long long r)
{
if(tree[x].l==tree[x].r)
{
tree[x].sum=sqrt(tree[x].sum);
tree[x].maxx=sqrt(tree[x].maxx);
return ;
}
long long mid=(tree[x].l+tree[x].r)>>;
if(l<=mid&&tree[x<<].maxx>)
{
modify(x<<,l,r);
}
if(r>mid&&tree[x<<|].maxx>)
{
modify(x<<|,l,r);
}
pushup(x);
}
long long query(long x,long long l,long long r)
{
if(l<=tree[x].l&&r>=tree[x].r)
{
return tree[x].sum;
}
long long mid=(tree[x].l+tree[x].r)>>;
long long ans=;
if(l<=mid)
{
ans+=query(x<<,l,r);
}
if(r>mid)
{
ans+=query(x<<|,l,r);
}
return ans;
}
int main()
{
cin>>n;
for(long long i=;i<=n;i++)
{
cin>>num[i];
}
build(,,n);
long long m,opt,l,r;
cin>>m;
while(m--)
{
cin>>opt>>l>>r;
if(l>r)
{
swap(l,r);
}
if(opt==)
{
modify(,l,r);
}
else
{
cout<<query(,l,r)<<endl;
}
}
return ;
}

day1 晚上 P4145 上帝造题的七分钟2 / 花神游历各国 线段树的更多相关文章

  1. GSS4 - Can you answer these queries IV || luogu4145上帝造题的七分钟2 / 花神游历各国 (线段树)

    GSS4 - Can you answer these queries IV || luogu4145上帝造题的七分钟2 / 花神游历各国 GSS4 - Can you answer these qu ...

  2. 洛谷P4145 上帝造题的七分钟2/花神游历各国 [树状数组,并查集]

    题目传送门 题目背景 XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. 题目描述 "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是 ...

  3. 洛谷P4145——上帝造题的七分钟2 / 花神游历各国

    题目背景 XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. 题目描述 "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对一段 ...

  4. 洛谷P4145 上帝造题的七分钟2 / 花神游历各国(重题:洛谷SP2713 GSS4 - Can you answer these queries IV)

    题目背景 XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. 题目描述 "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对一段 ...

  5. 【题解】 Luogu P4145 上帝造题的七分钟2 / 花神游历各国

    原题传送门 这道题实际和GSS4是一样的,只是输入方式有点区别 GSS4传送门 这道题暴力就能过qaq(这里暴力指线段树) 数据比较水 开方修改在线段树中枚举叶节点sqrt 查询区间和线段树基本操作 ...

  6. 洛谷 P4145 上帝造题的七分钟2 / 花神游历各国

    洛谷 这题就是区间开根号,区间求和.我们可以分块做. 我们记布尔数组vis[i]表示第i块中元素是否全部为1. 因为显然当一个块中元素全部为1时,并不需要对它进行根号操作. 我们每个块暴力开根号,因为 ...

  7. P4145 上帝造题的七分钟2 / 花神游历各国(线段树区间开平方)

    有点意思,不需要什么懒标记之类的东西,因为一个数无论怎样开平方,最后取整的结果必然会是1,所以我们不妨用最大值来维护,若区间最大值不为1,就暴力修改,否则不用管. #include<bits/s ...

  8. P4145 上帝造题的七分钟2 / 花神游历各国

    思路 每个数不会被开方超过log次,对每个数暴力开方即可 代码 #include <algorithm> #include <cstring> #include <cst ...

  9. luogu P4145 上帝造题的七分钟2 / 花神游历各国 维护区间和&&区间开根号

    因为开根号能使数字减小得非常快 所以开不了几次(6次?)很大的数就会变成1..... 所以我们可以维护区间最大值,若最大值>1,则继续递归子树,暴力修改叶节点,否则直接return (好像也可以 ...

随机推荐

  1. Spring 源码阅读 一

    终于,有一天我也来看Spring的源码了,看了一阵之后感觉心情那叫一个舒畅,对Spring底层的实现也有了进一步的了解, 最直观的感受就是Spring的命名风格很赞,很长,真的长到使人见名知意, 闲言 ...

  2. STM32之串口DMA接收不定长数据

    STM32之串口DMA接收不定长数据 引言 在使用stm32或者其他单片机的时候,会经常使用到串口通讯,那么如何有效地接收数据呢?假如这段数据是不定长的有如何高效接收呢? 同学A:数据来了就会进入串口 ...

  3. java的动手动脑10月20日

    (1)动手动脑 该函数没有赋初值再就是如果类提供一个自定义的构造方法,将导致系统不在提供默认的构造方法. (2) public class test { /*** @param args*/publi ...

  4. python 基本排序算法

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/9/15 下午5:06 # @Author : lb # @File : so ...

  5. numpy.random.rand

    numpy.random.rand(d0,d1,...,dn ) 给定形状中的随机值. 创建一个给定形状的数组,并用统一分布的随机样本填充它.[0, 1) 参数: d0,d1,...,dn:int,可 ...

  6. npm install bcrypt报错

    gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env va ...

  7. Vue 上传材料并传给后端接口(使用input)

    最近工作中接到一个需求,需要上传一个文件材料,提交时传给后端.使用的框架是Vue,废话不说直接上代码 <template> <div> <input type=" ...

  8. 在VM上安装OpenWrt

    1.选择'自定义',点击'下一步' 2.'硬件兼容性'默认,点击'下一步' 3.'稍后安装操作系统',点击'下一步' 4.客户机操作系统'Linux' 版本'CentOS 64位',点击'下一步' 说 ...

  9. ESP8266开发之旅 网络篇⑭ web配网

    1. 前言     目前,市面上流行多种配网方式: WIFI模块的智能配网(SmartConfig以及微信AirKiss配网) SmartConfig 配网方式 请参考博主之前的博文 ESP8266开 ...

  10. 部署acfs笔记

    acfs问题分析 环境描述 某电力项目创建了两个磁盘组,分别是OGGEXT和OGGREP,利用这两个磁盘组划分了两个acfs文件系统,之后,cloud监控就一直在报磁盘空间不足,但是这两个文件系统的使 ...