【luogu4145】 上帝造题的七分钟2 / 花神游历各国 [线段树]
P4145 上帝造题的七分钟2 / 花神游历各国
把一段区间里的每个数都开方 求区间和
可以发现最多开方开6次就能都变为1 所以可以hei暴力地一个点一个点地改 具体操作我用的和buildtree差不多
还要注意 是当前区间的最大值<=1时才不处理 我写的==1QAQ 导致BZOJ上有一个点超时
#include<iostream> #include<cstdio> #include<queue> #include<cstring> #include<cmath> #include<stack> #include<algorithm> using namespace std; #define ll long long #define rg register #define lson o<<1 #define rson o<<1|1 const int N=100000+5,M=200000+5,inf=0x3f3f3f3f,P=19650827; int n,m; ll a[N],sum[N<<2],mx[N<<2]; template <class t>void rd(t &x){x=0;int w=0;char ch=0;while(!isdigit(ch)) w|=ch=='-',ch=getchar();while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();x=w?-x:x; }void pushup(int o){sum[o]=sum[lson]+sum[rson];mx[o]=max(mx[lson],mx[rson]); }void update(int o,int l,int r,int x,int y){if(r<x||y<l) return;if(x<=l&&r<=y&&mx[o]<=1) return;if(l==r) {sum[o]=mx[o]=floor(sqrt(mx[o]));return;}int mid=(l+r)>>1;update(lson,l,mid,x,y),update(rson,mid+1,r,x,y);pushup(o); }void buildtree(int o,int l,int r){if(l==r) {sum[o]=mx[o]=a[l];return;}int mid=(l+r)>>1;buildtree(lson,l,mid);buildtree(rson,mid+1,r);pushup(o); }ll query(int o,int l,int r,int x,int y){ll ans=0;if(r<x||y<l) return 0;if(x<=l&&r<=y) return sum[o];int mid=(l+r)>>1;ans+=query(lson,l,mid,x,y);ans+=query(rson,mid+1,r,x,y);return ans; }int main(){rd(n);for(int i=1;i<=n;++i) rd(a[i]);buildtree(1,1,n);rd(m);while(m--){int k,l,r;rd(k),rd(l),rd(r);if(l>r) swap(l,r);if(k==2) update(1,1,n,l,r);else printf("%lld\n",query(1,1,n,l,r));}return 0; }
转载于:https://www.cnblogs.com/lxyyyy/p/11164189.html
【luogu4145】 上帝造题的七分钟2 / 花神游历各国 [线段树]相关推荐
- P4145 上帝造题的七分钟2 / 花神游历各国(线段树区间开平方)
有点意思,不需要什么懒标记之类的东西,因为一个数无论怎样开平方,最后取整的结果必然会是1,所以我们不妨用最大值来维护,若区间最大值不为1,就暴力修改,否则不用管. #include<bits/s ...
- P4145-上帝造题的七分钟2/花神游历各国【并查集,树状数组】
正题 题目链接:https://www.luogu.com.cn/problem/P4145 题目大意 一个序列要求支持 区间开根向下取整 区间求和 解题思路 一个数开根约logloglog次就会到1 ...
- [BZOJ3211] 花神游历各国 - 线段树
3211: 花神游历各国 Time Limit: 5 Sec Memory Limit: 128 MB Submit: 4766 Solved: 1741 [Submit][Status][Dis ...
- 【暑假训练 7.10】 codevs 2492 上帝造题的七分钟2
Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对 ...
- BZOJ3038 上帝造题的七分钟
Time Limit: 3 Sec Memory Limit: 128 MB Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. "第一分钟,X说, ...
- BZOJ 3038: 上帝造题的七分钟2【线段树区间开方问题】
3038: 上帝造题的七分钟2 Time Limit: 3 Sec Memory Limit: 128 MB Submit: 1469 Solved: 631 [Submit][Status][D ...
- BZOJ 3038 上帝造题的七分钟2
Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对 ...
- bzoj 3211: 花神游历各国 bzoj 3038: 上帝造题的七分钟2
3211: 花神游历各国 Time Limit: 5 Sec Memory Limit: 128 MB Submit: 3438 Solved: 1277 [Submit][Status][Dis ...
- 上帝造题的七分钟(ybtoj-树状数组)
文章目录 题目描述 解析 代码 thanks for reading! 题目描述 解析 差点活活恶心死 搬砖题 (其实细节没有那么多,还是代码能力太差) 利用矩阵的二维差分 加上树状数组搞一搞 就完事 ...
最新文章
- 继承项目第13周-项目1-基类中成员的访问限定符和派生类的继承方式
- Linux下安装jdk1.6和tomcat
- 一个通用数据库操作组件DBUtil(c#)、支持SqlServer、Oracle、Mysql、postgres、SQLITE
- 很简单很简单的DBHelper类
- Java0steam_Java学习 - Stream 使用
- 第七章——DMVs和DMFs(4)——用DMV和DMF监控磁盘IO
- 【感悟】本书书名无法描述本书内容(一)
- Xcode5 取消项目ARC,或者单个类ARC切换
- 所有键盘鼠标模拟方式原理及实现
- 学会这招,从此解决被知乎封号烦恼
- ArcGis利用栅格处理工具进行影像裁剪
- PHP 下载文件的方法(指定路径)
- php 5.6 语法,在PHP 5.6及以上版本中,还可以使用“...”语法实现可变参数列表。...
- 页面浏览pdf或图片iframe
- 路在何方?前途迷茫,去不去HP?
- 初级程序员软考重点6 数据结构与算法
- GSM短信发送与电话等
- Tita OKR实施攻略
- 短波宽带通信系统的信道建模仿真及优化
- 华为nova2s用哪个型号服务器,华为nova 2s
热门文章
- c语言中什么函数可以作为虚函数,C++语言中的“虚函数”就像C语言中的指针,必须要弄懂的...
- OSG仿真案例(5)——创建火光、爆炸(碎片)
- pyuic4和pyrcc4d的差别
- android 声音突然变小,手机明明没坏,为什么声音开到最大依然很小?这个方法你知道吗...
- element提交图片限制一张_element-ui上传图片限制图片比例
- php5.6 win2008 mssql,Php5.6.31连接sqlserver 2008R2数据库问题sqlsrv(php5.3及以上版本)与mssql(php5.3以前版本)②...
- ubuntu jdk tomcat mysql_linux-ubuntu tomcat jdk 及 mysql 安装配置
- 计算机专业简述,简述计算机专业毕业论文完整版.doc
- 前端怎么自我介绍_未雨绸缪,小米前端实习面经
- 屏蔽武汉ip地址 php,wordpress如何限制屏蔽IP地址