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 / 花神游历各国 [线段树]相关推荐

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

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

  2. P4145-上帝造题的七分钟2/花神游历各国【并查集,树状数组】

    正题 题目链接:https://www.luogu.com.cn/problem/P4145 题目大意 一个序列要求支持 区间开根向下取整 区间求和 解题思路 一个数开根约logloglog次就会到1 ...

  3. [BZOJ3211] 花神游历各国 - 线段树

    3211: 花神游历各国 Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 4766  Solved: 1741 [Submit][Status][Dis ...

  4. 【暑假训练 7.10】 codevs 2492 上帝造题的七分钟2

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

  5. BZOJ3038 上帝造题的七分钟

    Time Limit: 3 Sec Memory Limit: 128 MB Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. "第一分钟,X说, ...

  6. BZOJ 3038: 上帝造题的七分钟2【线段树区间开方问题】

    3038: 上帝造题的七分钟2 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 1469  Solved: 631 [Submit][Status][D ...

  7. BZOJ 3038 上帝造题的七分钟2

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

  8. bzoj 3211: 花神游历各国 bzoj 3038: 上帝造题的七分钟2

    3211: 花神游历各国 Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 3438  Solved: 1277 [Submit][Status][Dis ...

  9. 上帝造题的七分钟(ybtoj-树状数组)

    文章目录 题目描述 解析 代码 thanks for reading! 题目描述 解析 差点活活恶心死 搬砖题 (其实细节没有那么多,还是代码能力太差) 利用矩阵的二维差分 加上树状数组搞一搞 就完事 ...

最新文章

  1. 继承项目第13周-项目1-基类中成员的访问限定符和派生类的继承方式
  2. Linux下安装jdk1.6和tomcat
  3. 一个通用数据库操作组件DBUtil(c#)、支持SqlServer、Oracle、Mysql、postgres、SQLITE
  4. 很简单很简单的DBHelper类
  5. Java0steam_Java学习 - Stream 使用
  6. 第七章——DMVs和DMFs(4)——用DMV和DMF监控磁盘IO
  7. 【感悟】本书书名无法描述本书内容(一)
  8. Xcode5 取消项目ARC,或者单个类ARC切换
  9. 所有键盘鼠标模拟方式原理及实现
  10. 学会这招,从此解决被知乎封号烦恼
  11. ArcGis利用栅格处理工具进行影像裁剪
  12. PHP 下载文件的方法(指定路径)
  13. php 5.6 语法,在PHP 5.6及以上版本中,还可以使用“...”语法实现可变参数列表。...
  14. 页面浏览pdf或图片iframe
  15. 路在何方?前途迷茫,去不去HP?
  16. 初级程序员软考重点6 数据结构与算法
  17. GSM短信发送与电话等
  18. Tita OKR实施攻略
  19. 短波宽带通信系统的信道建模仿真及优化
  20. 华为nova2s用哪个型号服务器,华为nova 2s

热门文章

  1. c语言中什么函数可以作为虚函数,C++语言中的“虚函数”就像C语言中的指针,必须要弄懂的...
  2. OSG仿真案例(5)——创建火光、爆炸(碎片)
  3. pyuic4和pyrcc4d的差别
  4. android 声音突然变小,手机明明没坏,为什么声音开到最大依然很小?这个方法你知道吗...
  5. element提交图片限制一张_element-ui上传图片限制图片比例
  6. php5.6 win2008 mssql,Php5.6.31连接sqlserver 2008R2数据库问题sqlsrv(php5.3及以上版本)与mssql(php5.3以前版本)②...
  7. ubuntu jdk tomcat mysql_linux-ubuntu tomcat jdk 及 mysql 安装配置
  8. 计算机专业简述,简述计算机专业毕业论文完整版.doc
  9. 前端怎么自我介绍_未雨绸缪,小米前端实习面经
  10. 屏蔽武汉ip地址 php,wordpress如何限制屏蔽IP地址