[bzoj3038]上帝造题的7分钟2
考虑每一个位置最多开6次左右就会变成1,然后操作就没有意义了,因此对线段树维护区间和和一个标记,表示是否全部都是1,然后对于修改,如果区间标记不是1就暴力下去,是1就不用操作,复杂度为$o(6nlogn)$
1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 100005
4 #define ll long long
5 #define L (k<<1)
6 #define R (L+1)
7 #define mid (l+r>>1)
8 int n,m,p,l,r,laz[N<<2];
9 ll f[N<<2];
10 void up(int k){
11 laz[k]=(laz[L]&laz[R]);
12 f[k]=f[L]+f[R];
13 }
14 void build(int k,int l,int r){
15 if (l==r){
16 scanf("%lld",&f[k]);
17 if (f[k]==1)laz[k]=1;
18 return;
19 }
20 build(L,l,mid);
21 build(R,mid+1,r);
22 up(k);
23 }
24 void update(int k,int l,int r,int x,int y){
25 if ((l>y)||(x>r))return;
26 if ((x<=l)&&(r<=y)&&(laz[k]))return;
27 if (l==r){
28 f[k]=(ll)sqrt(f[k]);
29 if (f[k]==1)laz[k]=1;
30 return;
31 }
32 update(L,l,mid,x,y);
33 update(R,mid+1,r,x,y);
34 up(k);
35 }
36 ll query(int k,int l,int r,int x,int y){
37 if ((l>y)||(x>r))return 0;
38 if ((x<=l)&&(r<=y))return f[k];
39 return query(L,l,mid,x,y)+query(R,mid+1,r,x,y);
40 }
41 int main(){
42 scanf("%d",&n);
43 build(1,1,n);
44 scanf("%d",&m);
45 for(int i=1;i<=m;i++){
46 scanf("%d%d%d",&p,&l,&r);
47 if (l>r)swap(l,r);
48 if (!p)update(1,1,n,l,r);
49 else printf("%lld\n",query(1,1,n,l,r));
50 }
51 }
[bzoj3038]上帝造题的7分钟2的更多相关文章
- bzoj3211花神游历各国&&bzoj3038上帝造题的七分钟2*
bzoj3211花神游历各国 题意: n个数的序列,m个操作,操作两种:区间开根(向下取整)和区间求和.n≤100000,m≤200000,序列中的数非负且≤109. 题解: 一个≤109的数开6次根 ...
- bzoj3038 上帝造题的七分钟2
Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对 ...
- bzoj3038上帝造题的七分钟2
3038: 上帝造题的七分钟2 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 1679 Solved: 713[Submit][Status][Dis ...
- Bzoj3038 上帝造题的七分钟2 线段树
Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 1135 Solved: 509 Description XLk觉得<上帝造题的七分钟>不太 ...
- Bzoj3038 上帝造题的七分钟2 并查集
Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 1135 Solved: 509 Description XLk觉得<上帝造题的七分钟>不太 ...
- TYVJ 1941 BZOJ3038 上帝造题的七分钟2 并查集+树状数组
背景 XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. 描述 "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对一段数中每个 ...
- BZOJ3038 上帝造题的七分钟
Time Limit: 3 Sec Memory Limit: 128 MB Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. "第一分钟,X说, ...
- [BZOJ 3038]上帝造题的7分钟2(树状数组)
分析:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3038 这题看起来没办法做……但是注意到1e12只要开方8次就能到1……所以直接暴力就行 ...
- [BZOJ3038]上帝造题的七分钟2 树状数组+并查集
考试的时候用了两个树状数组去优化,暴力修改,树状数组维护修改后区间差值还有最终求和,最后骗了40分.. 这道题有好多种做法,求和好说,最主要的是开方.这道题过的关键就是掌握一点:在数据范围内,最多开方 ...
随机推荐
- LightningChart XY功能中的常见问题
LightningChart XY功能中的常见问题 XY 是LightningChart 的重要功能之一,也是被用户使用最广泛的.用户经常对这个功能有着这样那样的疑问,现在将一些常用问题汇总了一下,希 ...
- js 判断一个变量是否有值
最近遇到一个面试题,判断一个变量是否有值,当时有点蒙,其实很简单,就是判断 变量是否为 undefined或者null function isFlag(val) { if(Object.prototy ...
- ToString()字符串转换你用正确了吗?
前言 在开发中,ToString()这个方法太方便了,以致于误解大家转换时都是直接Object.ToString()直接转换, 其实不然, 一般都是转之前先判断是否为null后再进行转换,否则会直接报 ...
- RPAaaS是什么?为何能够推进RPA人人可用?
RPAaaS是什么?为何能够推进RPA人人可用? 助力中小企业快速实现自动化,RPAaaS加速"RPA人人可用"时代到来 相对传统RPA拥有更多优势,PRAaaS为RPA行业带来更 ...
- C++/CLR 使用(VS2012,VS2013,VS2015)编写
转载自:http://www.th7.cn/system/win/201509/129417.shtml VS2010以及以前的版本,创建项目时都可以在CLR下找到"Windows窗体应用程 ...
- nexus设置npm下载管理
nexus设置npm下载管理 第一步 登录私服网页 第二步 创建存储空间(如果使用默认的存储空间,此步骤可省略) 第三步 输入空间的名称,点击create创建 第四步 创建仓库 npm的仓库有三种: ...
- 更好的 java 重试框架 sisyphus 配置的 2 种方式介绍
回顾 我们前面学习了 更好的 java 重试框架 sisyphus 入门简介 更好的 java 重试框架 sisyphus 背后的故事 这一节让我们一起学习下 sisyphus 基于函数式的配置和注解 ...
- 初学Python-day7 案例(乘法口诀 已更新!!)
案例::(乘法口诀) 用for循环做乘法口诀: 1 # 第一种 2 for i in range(1, 10): 3 for j in range(1, i + 1): 4 print('{} * ...
- [对对子队]事后总结Beta
设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 要做一个游戏,定义的很清楚,实现出来的效果贴近定义,对用户和场景有清晰描述 我们达到目标了么(原计划的功 ...
- AIApe问答机器人Scrum Meeting 5.1
Scrum Meeting 5 日期:2021年5月1日 会议主要内容概述:汇报两日工作. 一.进度情况 组员 负责 两日内已完成的工作 后两日计划完成的工作 工作中遇到的困难 李明昕 后端 Task ...