【题目描述】

花神喜欢步行游历各国,顺便虐爆各地竞赛。花神有一条游览路线,它是线型的,也就是说,所有游历国家呈一条线的形状排列,花神对每个国家都有一个喜欢程度(当然花神并不一定喜欢所有国家)。

每一次旅行中,花神会选择一条旅游路线,它在那一串国家中是连续的一段,这次旅行带来的开心值是这些国家的喜欢度的总和,当然花神对这些国家的喜欢程序并不是恒定的,有时会突然对某些国家产生反感,使他对这些国家的喜欢度变为 (可能是花神虐爆了那些国家的 OI,从而感到乏味)。

现在给出花神每次的旅行路线,以及开心度的变化,请求出花神每次旅行的开心值。

【Input】

第一行是一个整数 NN,表示有 NN 个国家;

第二行有 NN 个空格隔开的整数,表示每个国家的初始喜欢度

第三行是一个整数 MM,表示有 MM 条信息要处理;

第四行到最后,每行三个整数 x,l,rx,l,r,当 x = 1时询问游历国家 ll 到 rr 的开心值总和,就是  ,当 x = 2 时国家 ll 到 rr 中每个国家的喜欢度变为

【Output】

每次 x=1 时,每行一个整数。表示这次旅行的开心度。

【Sample Input】

4
1 100 5 5
5
1 1 2
2 1 2
1 1 2
2 2 3
1 1 4

【Sample Output】

101
11
11

【Data range & Tips】

对于全部数据,

注:建议使用 sqrt 函数,且向下取整。

【Solution】

没跑满,然后过了(神奇)!

区间修改时不打懒标记,把区间内每个叶子节点都遍历(我不知道开根号怎么打懒标记)

然后有个小优化:

维护maxn记录当前区间最大的数,因为1,0开方和原值一样,所以当时就return;

【Code】

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
struct Segment_Tree{long long sum,maxn;
}tree[1000000];
int n,m,a[100100],op,ll,rr;
inline void build(int k,int l,int r){if(l==r){tree[k].sum=a[l];tree[k].maxn=a[l];return;}int mid=(l+r)>>1;build(k<<1,l,mid);build(k<<1|1,mid+1,r);tree[k].sum=tree[k<<1].sum+tree[k<<1|1].sum;tree[k].maxn=max(tree[k<<1].maxn,tree[k<<1|1].maxn);
}
inline void modify(int k,int l,int r,int x,int y){if(l>y||r<x)return;if(tree[k].maxn<=1)return;if(l==r){tree[k].sum=floor(sqrt(tree[k].sum));tree[k].maxn=tree[k].sum;return;}int mid=(l+r)>>1;if(x<=mid)modify(k<<1,l,mid,x,y);if(y>mid)modify(k<<1|1,mid+1,r,x,y);tree[k].sum=tree[k<<1].sum+tree[k<<1|1].sum;tree[k].maxn=max(tree[k<<1].maxn,tree[k<<1|1].maxn);
}
inline long long Ask(int k,int l,int r,int x,int y){if(l>y||r<x)return 0;if(l>=x&&r<=y)return tree[k].sum;int mid=(l+r)>>1;long long res=0;if(x<=mid)res+=Ask(k<<1,l,mid,x,y);if(y>mid)res+=Ask(k<<1|1,mid+1,r,x,y);return res;
}
int main(){scanf("%d",&n);for(register int i=1;i<=n;i++)scanf("%d",&a[i]);build(1,1,n);scanf("%d",&m);for(register int i=1;i<=m;i++){scanf("%d%d%d",&op,&ll,&rr);if(op==1){printf("%lld\n",Ask(1,1,n,ll,rr)); }else{modify(1,1,n,ll,rr);}}return 0;
}

ybt.1550 花神游历各国 题解相关推荐

  1. 花神游历各国 题解(小清新线段树/树状数组+并查集)

    题面 众所周知,这是一道小清新线段树 然而可以用树状数组水过去且跑得飞快 看到区间开方第一反应肯定是线段树懒标记区间修改之类的,但是这个东西似乎确凿不可维护 所以考虑暴力循环单点修改->T飞 于 ...

  2. 3211: 花神游历各国

    3211: 花神游历各国 Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 1042  Solved: 381 [Submit][Status] Desc ...

  3. BZOJ3211: 花神游历各国

    BZOJ3211: 花神游历各国 Description Input Output 每次x=1时,每行一个整数,表示这次旅行的开心度 Sample Input 4 1 100 5 5 5 1 1 2 ...

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

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

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

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

  6. 【luogu4145】 上帝造题的七分钟2 / 花神游历各国 [线段树]

    P4145 上帝造题的七分钟2 / 花神游历各国 把一段区间里的每个数都开方 求区间和 可以发现最多开方开6次就能都变为1 所以可以hei暴力地一个点一个点地改 具体操作我用的和buildtree差不 ...

  7. 1550:花神游历各国

    [题目描述] 原题来自:BZOJ 3211 花神喜欢步行游历各国,顺便虐爆各地竞赛.花神有一条游览路线,它是线型的,也就是说,所有游历国家呈一条线的形状排列,花神对每个国家都有一个喜欢程度(当然花神并 ...

  8. 1276. 花神游历各国

    花神喜欢步行游历各国,顺便虐爆各地竞赛. 花神有一条游览路线,它是线型的,也就是说,所有游历国家呈一条线的形状排列,花神对每个国家都有一个喜欢程度(当然花神并不一定喜欢所有国家). 每一次旅行中,花神 ...

  9. 花神游历各国(线段树)

    题目描述: 花神喜欢步行游历各国,顺便虐爆各地竞赛.花神有一条游览路线,它是线型的,也就是说,所有游历国家呈一条线的形状排列,花神对每个国家都有一个喜欢程度(当然花神并不一定喜欢所有国家). 每一次旅 ...

最新文章

  1. Arcgis for JS之Cluster聚类分析的实现
  2. UnityShader入门精要-3.3 UnityShader的结构
  3. linux查看wan的ip地址,查看wan口ip地址操作方法
  4. Recommended Journals for MPhil degree at Business Model Innovation Group
  5. QT的QNdefFilter类的使用
  6. oracle如何在本地建库,oracle在本地建库
  7. 搞懂Transformer
  8. java关键字汉化_java关键字是什么
  9. pytorch 中网络参数 weight bias 初始化方法
  10. BGP(3):BGP 的路径优选
  11. web开发必备的几个软件
  12. 验证世界各地区手机号码libphonenumber
  13. mysql环境变量配置还是不行_为什么要配置mysql环境变量
  14. 计算机桌面下方任务栏图标不见了,任务栏显示桌面图标不见怎么办
  15. homeassistant搭建_智能家居 篇二:Home Assistant简易智能家居环境搭建
  16. Android打开项目一直build的问题解决
  17. 建立数据驱动,关键字驱动和混合Selenium框架这些你了解吗
  18. OPCUA协议: 复杂服务器C语言初步实践(回调与方法)
  19. Java8 lambda表达式详解
  20. 一、什么是Nginx? Nginx的作用是什么?

热门文章

  1. 华为手机android测试工程师,【华为招聘】华为应用市场招聘Java,android及测试工程师...
  2. split多个分隔符进行分割
  3. 涌泉蜜桔,无核化渣,绝了
  4. AWS训练营培训笔记
  5. C# 中的多线程实现方式
  6. html5 矢量图形插件,HTML5画布矢量图形?
  7. 百度地图引用报错A parser-blocking, cross site (i.e. different eTLD+1) script
  8. from pdfminer.pdfinterp import PDFResourceManager, process_pdf ImportError: cannot import name 'proc
  9. java基于springboot的人脸识别企业排班考勤系统之人脸识别模块的设计和实现
  10. 锁7---分段锁(一种锁的形式)