C++ 花神游历各国
线段树,可是时间复杂度可能会爆掉,需要优化:
看代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define ll long long
#define MAXN 100005
using namespace std;
int n,m;
ll s[4*MAXN];
bool mark[4*MAXN];
void up(int p){s[p]=s[p*2]+s[p*2+1];mark[p]=mark[p*2]&&mark[p*2+1];return ;
}
void build(int p,int l,int r){if(l==r){scanf("%lld",&s[p]);if(s[p]==1||s[p]==0)mark[p]=true;return ;}int m=l+r>>1;build(p*2,l,m);build(p*2+1,m+1,r);up(p);return ;
}
void update(int p,int l,int r,int x,int y){if(mark[p]) return ;if(r<x||l>y) return ;if(l==r){s[p]=sqrt(s[p]);if(s[p]==1||s[p]==0)mark[p]=true;return ;}int m=l+r>>1;update(p*2,l,m,x,y);update(p*2+1,m+1,r,x,y);up(p);
}
ll query_sum(int p,int l,int r,int x,int y){if(r<x||l>y) return 0LL;if(x<=l&&r<=y){return s[p];}int m=l+r>>1;ll ret=0;ret+=query_sum(p*2,l,m,x,y);ret+=query_sum(p*2+1,m+1,r,x,y);return ret;
}
int main(){scanf("%d",&n);build(1,1,n);scanf("%d",&m);for(int i=1,t,l,r;i<=m;i++){cin>>t>>l>>r;if(t==1){cout<<query_sum(1,1,n,l,r)<<"\n";}else{update(1,1,n,l,r);}}return 0;
}
C++ 花神游历各国相关推荐
- 3211: 花神游历各国
3211: 花神游历各国 Time Limit: 5 Sec Memory Limit: 128 MB Submit: 1042 Solved: 381 [Submit][Status] Desc ...
- BZOJ3211: 花神游历各国
BZOJ3211: 花神游历各国 Description Input Output 每次x=1时,每行一个整数,表示这次旅行的开心度 Sample Input 4 1 100 5 5 5 1 1 2 ...
- [BZOJ3211] 花神游历各国 - 线段树
3211: 花神游历各国 Time Limit: 5 Sec Memory Limit: 128 MB Submit: 4766 Solved: 1741 [Submit][Status][Dis ...
- bzoj 3211: 花神游历各国 bzoj 3038: 上帝造题的七分钟2
3211: 花神游历各国 Time Limit: 5 Sec Memory Limit: 128 MB Submit: 3438 Solved: 1277 [Submit][Status][Dis ...
- 【luogu4145】 上帝造题的七分钟2 / 花神游历各国 [线段树]
P4145 上帝造题的七分钟2 / 花神游历各国 把一段区间里的每个数都开方 求区间和 可以发现最多开方开6次就能都变为1 所以可以hei暴力地一个点一个点地改 具体操作我用的和buildtree差不 ...
- 1550:花神游历各国
[题目描述] 原题来自:BZOJ 3211 花神喜欢步行游历各国,顺便虐爆各地竞赛.花神有一条游览路线,它是线型的,也就是说,所有游历国家呈一条线的形状排列,花神对每个国家都有一个喜欢程度(当然花神并 ...
- ybt.1550 花神游历各国 题解
[题目描述] 花神喜欢步行游历各国,顺便虐爆各地竞赛.花神有一条游览路线,它是线型的,也就是说,所有游历国家呈一条线的形状排列,花神对每个国家都有一个喜欢程度(当然花神并不一定喜欢所有国家). 每一次 ...
- 1276. 花神游历各国
花神喜欢步行游历各国,顺便虐爆各地竞赛. 花神有一条游览路线,它是线型的,也就是说,所有游历国家呈一条线的形状排列,花神对每个国家都有一个喜欢程度(当然花神并不一定喜欢所有国家). 每一次旅行中,花神 ...
- 花神游历各国(线段树)
题目描述: 花神喜欢步行游历各国,顺便虐爆各地竞赛.花神有一条游览路线,它是线型的,也就是说,所有游历国家呈一条线的形状排列,花神对每个国家都有一个喜欢程度(当然花神并不一定喜欢所有国家). 每一次旅 ...
- bzoj3211花神游历各国
试题描述 花仔喜欢步行游历各国,花仔有一条游览路线,它是线型的,也就是说,所有游历国家呈一条线的形状排列,花仔对每个国家都有一个喜欢度(当然花仔并不一定喜欢所有国家),每一次旅行中,花仔会选择一条旅游 ...
最新文章
- 常见的容错机制+failover+failback
- 程序员们,今天就让她陪你们放松一下吧。她还有大宝剑哦。【原创】
- java程序设计第一次作业
- 测试书籍推荐(收集)
- 【Kaggle-MNIST之路】两层的神经网络Pytorch(四行代码的模型)
- 还能开发搜索引擎吗?
- 【JVM】javap命令行分析揭示boolean的本质的虚拟机指令
- Winform使用DevExpress的WaitDialogForm画面 z
- MFCC特征提取过程详解
- python股票接口_Python 从 sina 股票数据接口读取数据,并保存到 MySQL 数据库
- 用 mCustomScrollbar 滚动条插件实现滚动更新添加数据
- 如何0成本搭建外卖CPS返利小程序
- win8改win7 bios设置方法
- Extention匿名类
- 妙啊!巧用 SSH 突破限制穿透内网
- 电话号码归属地批量查询软件选择需谨慎
- 国信长天蓝桥杯嵌入式类——stm32——使用keil4建立工程文件过程
- 微信小程序如何实现切换主题(更改皮肤)
- java比较两个对象_java判断两个对象是否相等的方法
- 通过路由器子接口实现 VLAN 间的互访