day1 晚上 P4145 上帝造题的七分钟2 / 花神游历各国 线段树
#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 / 花神游历各国 线段树的更多相关文章
- GSS4 - Can you answer these queries IV || luogu4145上帝造题的七分钟2 / 花神游历各国 (线段树)
GSS4 - Can you answer these queries IV || luogu4145上帝造题的七分钟2 / 花神游历各国 GSS4 - Can you answer these qu ...
- 洛谷P4145 上帝造题的七分钟2/花神游历各国 [树状数组,并查集]
题目传送门 题目背景 XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. 题目描述 "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是 ...
- 洛谷P4145——上帝造题的七分钟2 / 花神游历各国
题目背景 XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. 题目描述 "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对一段 ...
- 洛谷P4145 上帝造题的七分钟2 / 花神游历各国(重题:洛谷SP2713 GSS4 - Can you answer these queries IV)
题目背景 XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. 题目描述 "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对一段 ...
- 【题解】 Luogu P4145 上帝造题的七分钟2 / 花神游历各国
原题传送门 这道题实际和GSS4是一样的,只是输入方式有点区别 GSS4传送门 这道题暴力就能过qaq(这里暴力指线段树) 数据比较水 开方修改在线段树中枚举叶节点sqrt 查询区间和线段树基本操作 ...
- 洛谷 P4145 上帝造题的七分钟2 / 花神游历各国
洛谷 这题就是区间开根号,区间求和.我们可以分块做. 我们记布尔数组vis[i]表示第i块中元素是否全部为1. 因为显然当一个块中元素全部为1时,并不需要对它进行根号操作. 我们每个块暴力开根号,因为 ...
- P4145 上帝造题的七分钟2 / 花神游历各国(线段树区间开平方)
有点意思,不需要什么懒标记之类的东西,因为一个数无论怎样开平方,最后取整的结果必然会是1,所以我们不妨用最大值来维护,若区间最大值不为1,就暴力修改,否则不用管. #include<bits/s ...
- P4145 上帝造题的七分钟2 / 花神游历各国
思路 每个数不会被开方超过log次,对每个数暴力开方即可 代码 #include <algorithm> #include <cstring> #include <cst ...
- luogu P4145 上帝造题的七分钟2 / 花神游历各国 维护区间和&&区间开根号
因为开根号能使数字减小得非常快 所以开不了几次(6次?)很大的数就会变成1..... 所以我们可以维护区间最大值,若最大值>1,则继续递归子树,暴力修改叶节点,否则直接return (好像也可以 ...
随机推荐
- Android开发——实现子线程更新UI
Android中线程按功能分的话,可以分为两个,一个是主线程(UI线程),其他的都是子线程 主线程不能执行那些耗时过长的代码或任务(执行耗时过长的代码会出现应用未响应的提示),所以都是使用子线程来执行 ...
- 注册中心nacos完整部署及与eureka区别
1. 场景描述 nacos最近用的比较多,介绍下nacos及部署吧,刚看了下以前写过类似的,不过没写如何部署及与eureka区别,只展示了效果,补补吧. 2.解决方案 2.1 nacos与eureka ...
- CSDN VIP如何添加自定义栏目
几个月前我也开始在csdn上开了博客,一来给自己加几个少的可怜的流量,再者,让公众号的原创文章获得更多的曝光,让有需要的同学看到. 写过csdn博客的同学都知道,默认只有打赏c币功能:也没有专门广告位 ...
- vodevs3031 最富有的人
在你的面前有n堆金子,你只能取走其中的两堆,且总价值为这两堆金子的xor值,你想成为最富有的人,你就要有所选择. 输入描述 Input Description 第一行包含两个正整数n,表示有n堆金子. ...
- 安装高可用Hadoop生态 (二) 安装Zookeeper
2. 安装Zookeeper 2.1. 解压程序 ※ 3台服务器分别执行 .tar.gz -C/opt/cloud/packages /opt/cloud/bin/zookeeper /conf ...
- Have a Good Attitude 良好的态度
Poor attitudes lead to poor communication. Poor communication leads to poor service. Poor service le ...
- Java虚拟机重点知识归纳总结
一. JVM内存分区 分为程序计数器.虚拟机栈.本地方法栈.Java堆.方法区5个区域 其中Java堆和方法区是线程共享的,虚拟机栈.本地方法栈.程序计数器是线程隔离的. 程序计数器: 1.可 ...
- Django与drf 源码视图解析
0902自我总结 Django 与drf 源码视图解析 一.原生Django CBV 源码分析:View """ 1)as_view()是入口,得到view函数地址 2) ...
- java初始化与清理
初始化与清理 欢迎转载,转载烦请注明出处,谢谢. https://www.cnblogs.com/sx-wuyj/p/11177257.html 1.用构造器确保初始化 java中通过提供构造器,可以 ...
- linux下 Mysql 安装使用
.安装mysql sudo apt-get install mysql-server mysql-client sudo service mysql restart 2.5.7版本以上修修改updat ...