又是线段树。

区间开平方求和,套路题。

如果开到了1就不用再开下去了,否则直接到底。

记得 l > r 时交换 l r

 #include <cstdio>
#include <cmath>
#include <algorithm>
typedef long long LL;
const int N = ;
struct SegmentTree {
LL sum[N << ];
bool vis[N << ]; inline void pushup(int l, int r, int o) {
if(l == r) {
if(sum[o] == ) {
vis[o] = ;
}
return;
}
sum[o] = sum[o << ] + sum[o << | ];
vis[o] = (sum[o] == (r - l + ));
return;
}
void change(int L, int R, int l ,int r, int o) {
if(vis[o]) {
return;
}
int mid = (l + r) >> ;
if(l == r) {
sum[o] = (LL)(sqrt((long double)(sum[o])));
pushup(l, r, o);
return;
}
if(L <= mid) {
change(L, R, l, mid, o << );
}
if(mid < R) {
change(L, R, mid + , r, o << | );
}
pushup(l, r, o);
return;
}
LL ask(int L, int R, int l, int r, int o) {
if(L <= l && r <= R) {
return sum[o];
}
if(r < L || R < l) {
return ;
}
int mid = (l + r) >> ;
return ask(L, R, l, mid, o << ) + ask(L, R, mid + , r, o << | );
}
void build(int l, int r, int o) {
if(l == r) {
scanf("%lld", &sum[o]);
pushup(l, r, o);
return;
}
int mid = (l + r) >> ;
build(l, mid, o << );
build(mid + , r, o << | );
pushup(l, r, o);
return;
}
}SgT; int main() {
int n;
scanf("%d", &n);
SgT.build(, n, );
int m;
scanf("%d", &m);
int f, x, y;
while(m--) {
scanf("%d%d%d", &f, &x, &y);
if(x > y) {
std::swap(x, y);
}
if(f) {
printf("%lld\n",SgT.ask(x, y, , n, ));
}
else {
SgT.change(x, y, , n, );
}
}
return ;
}

AC代码

洛谷P4145 上帝造题的⑦minutes ②的更多相关文章

  1. 洛谷P4145 上帝造题的七分钟2/花神游历各国 [树状数组,并查集]

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

  2. 洛谷P4145——上帝造题的七分钟2 / 花神游历各国

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

  3. 洛谷P4145 上帝造题的七分钟2 / 花神游历各国(重题:洛谷SP2713 GSS4 - Can you answer these queries IV)

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

  4. 洛谷 P4145 上帝造题的七分钟2 / 花神游历各国

    洛谷 这题就是区间开根号,区间求和.我们可以分块做. 我们记布尔数组vis[i]表示第i块中元素是否全部为1. 因为显然当一个块中元素全部为1时,并不需要对它进行根号操作. 我们每个块暴力开根号,因为 ...

  5. 洛谷P4145上帝造题的七分钟——区间修改

    题目:https://www.luogu.org/problemnew/show/P4145 区间开平方,可以发现其实开几次就变成1,不需要开了,所以标记一下,每次只去开需要开的地方: 原来写的并查集 ...

  6. 洛谷 P4514 上帝造题的七分钟 解题报告

    P4514 上帝造题的七分钟 题目背景 裸体(裸题)就意味着身体(神题). 题目描述 "第一分钟,X说,要有矩阵,于是便有了一个里面写满了\(0\)的\(n \times m\)矩阵. 第二 ...

  7. 洛谷P4514 上帝造题的七分钟

    P4514 上帝造题的七分钟 题目背景 裸体就意味着身体. 题目描述 "第一分钟,X说,要有矩阵,于是便有了一个里面写满了000的n×mn×mn×m矩阵. 第二分钟,L说,要能修改,于是便有 ...

  8. P4145 上帝造题的七分钟2

    题目描述 "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对一段数中每个数都开平方(下取整)的操作. 第三分钟,k说,要能查询,于是便有了求一段 ...

  9. 【题解】 Luogu P4145 上帝造题的七分钟2 / 花神游历各国

    原题传送门 这道题实际和GSS4是一样的,只是输入方式有点区别 GSS4传送门 这道题暴力就能过qaq(这里暴力指线段树) 数据比较水 开方修改在线段树中枚举叶节点sqrt 查询区间和线段树基本操作 ...

随机推荐

  1. jQuery中.html(“xxx”)和.append("xxx") 的区别

    append是追加,html是完全替换比如<p id="1"><p>123</p></p> $("#1").ht ...

  2. Android Studio下创建menu布局文件

    一.问题: android studio项目中没有看到menu文件夹: 在android studio项目中想要添加menu布局文件,一开始我的做法是:直接在res文件夹右键选择xml文件来添加,如下 ...

  3. Practice4 阅读《构建之法》6-7章

    关于第五章后面的阅读已经在Practice3中有所感悟,下面是6-7章的读书笔记. 第6章 敏捷流程这一章讲了“敏捷流程”这一概念,关于这一名词我是很陌生的,在阅读之后有了一定的理解.敏捷流程是提供了 ...

  4. 【软件工程Ⅱ】作业二 |分布式版本控制系统Git的安装与使用

    本次作业的要去来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2097 远程库地址:https://github.com/Mol ...

  5. PAT 1004 成绩排名

    https://pintia.cn/problem-sets/994805260223102976/problems/994805321640296448 读入n名学生的姓名.学号.成绩,分别输出成绩 ...

  6. Baltic Dry Index

    波罗的海干散货指数(Baltic Dry Index,缩写BDI),是航运业的经济指标,它包含了航运业的干散货交易量的转变. BDI波罗的海指数是由几条主要航线的即期运费(Spot Rate)加权计算 ...

  7. maven 聚合的含义是父类打包 ,清理等 则子类自动打包;也就是一键打包 方便服务

    maven 聚合的含义是父类打包 ,清理等 则子类自动打包:也就是一键打包 方便服务

  8. 学习笔记之form表单

    form表单提交的数据 是字典类型 这样 方便在create时候 直接解压

  9. HTML-XML数据解析

    HTML代码 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...

  10. Docker报错总结

    [Docker push镜像报错] The push refers to a repository [192.168.200.103:5000/rancher/server]Get https://1 ...