P4145 上帝造题的七分钟2 / 花神游历各国(线段树区间开平方)
有点意思,不需要什么懒标记之类的东西,因为一个数无论怎样开平方,最后取整的结果必然会是1,所以我们不妨用最大值来维护,若区间最大值不为1,就暴力修改,否则不用管。
#include<bits/stdc++.h> using namespace std; const int maxn=1e6+7; struct node {int l;int r;unsigned long long sum;unsigned long long mx; }tree[maxn*4]; int n,m; unsigned long long l,r,opt; unsigned long long a[maxn]; void build(int now,int l,int r) {tree[now].l=l;tree[now].r=r;if(l==r){tree[now].sum=tree[now].mx=a[l];return;}int mid=(l+r)>>1; build(now*2,l,mid);build(now*2+1,mid+1,r);tree[now].sum=tree[now*2].sum+tree[now*2+1].sum;tree[now].mx=max(tree[now*2].mx,tree[now*2+1].mx); } void update(int now,int l,int r) {if(tree[now].l==tree[now].r){tree[now].sum=sqrt(tree[now].sum);tree[now].mx=sqrt(tree[now].mx);return;}int mid=(tree[now].l+tree[now].r)>>1;if(l<=mid&&tree[now*2].mx>1){update(now*2,l,r);}if(r>mid&&tree[now*2+1].mx>1){update(now*2+1,l,r);}tree[now].sum=tree[now*2].sum+tree[now*2+1].sum;tree[now].mx=max(tree[now*2].mx,tree[now*2+1].mx); } long long query(int now,int l,int r) {if(tree[now].l>=l&&tree[now].r<=r){return tree[now].sum;}int mid=(tree[now].l+tree[now].r)>>1;long long ans=0;if(l<=mid){ans+=query(now*2,l,r);}if(mid<r){ans+=query(now*2+1,l,r);}return ans; } int main() {scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%lld",&a[i]);}build(1,1,n);scanf("%d",&m);for(int i=1;i<=m;i++){scanf("%lld%lld%lld",&opt,&l,&r);if(l>r){swap(l,r);}if(opt==0){update(1,l,r);} else{printf("%lld\n",query(1,l,r));}}return 0; }
多说几句,数据比较毒瘤,狂开unsigned long long 就能AC
转载于:https://www.cnblogs.com/LJB666/p/10778562.html
P4145 上帝造题的七分钟2 / 花神游历各国(线段树区间开平方)相关推荐
- 【luogu4145】 上帝造题的七分钟2 / 花神游历各国 [线段树]
P4145 上帝造题的七分钟2 / 花神游历各国 把一段区间里的每个数都开方 求区间和 可以发现最多开方开6次就能都变为1 所以可以hei暴力地一个点一个点地改 具体操作我用的和buildtree差不 ...
- 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 ...
- 洛谷P4145 上帝造题的⑦minutes ②
又是线段树. 区间开平方求和,套路题. 如果开到了1就不用再开下去了,否则直接到底. 记得 l > r 时交换 l r 1 #include <cstdio> 2 #include ...
最新文章
- 1008: [HNOI2008]越狱(计数问题)
- python 爬虫 记录
- 内存分配函数 malloc、realloc、calloc
- 假设检验 Hypothesis testing
- boost::math::interpolators::cardinal_quadratic_b_spline用法的测试程序
- code ./打不开vscode编辑器
- Array | 74. Search a 2D Matrix
- 【转】Dicom中的Image Orientation/Position的理解
- 云端上的字节,引擎火力全开
- linux系统生成的新文件是什么编码的,Linux系统的默认编码怎样设置?
- matplotlib——3D图
- 围观Razavi和Sansen打架——电流并联反馈
- Whiteboard for mac(mac画图软件)
- 苹果笔记本访问服务器共享文件夹,mac查看win7共享文件怎么操作_mac如何访问win7共享文件夹-win7之家...
- 搜狗拼音linux 知乎,搜狗拼音知乎专版下载
- 系统地学习打字(个人见解)
- 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法
- 济南近郊出游——线路指南
- 支付宝 实现 移动网页支付、PC网页支付、混合APP支付(支持微信支付)
- Flutter 开发中最实用的 Dart 语法知识
热门文章
- 这款NLP神器火了!关键词一键提取、结果高度可视化,堪称「小白进阶大神」的实用工具包 | 开源...
- 2020 IEEE冯诺依曼奖得主:Michael Jordan --机器学习领域泰斗级人物
- SAP PP 系统怎么知道某个工单release触发的过程中检验的检验类型是03?
- 读德鲁克的《管理的实践》,我才明白,这些年,我错过了什么
- PLM系统的成功实施
- SAP SD基础知识之装运的组织单元(Organizational Units in Shipping)
- 核心算法缺位,人工智能发展面临“卡脖子”窘境
- Python基础之函数2 (参数的返回值)
- SAP MM MI01事务代码里的批次确定
- SAP LSMW 导入物料主数据报错 - You have not fully maintained the descriptions - 之分析