Description

 

Input

 

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

HINT

对于100%的数据, n ≤ 100000,m≤200000 ,data[i]非负且小于10^9

Source

SPOJ2713 gss4 数据已加强

思路:线段树并不能区间开方,但直接暴力修改是会超时的,只要加入一点点优化:若是该区间值为0||1那么就不必再修改了,注意也需要左右子树得出父节点。

上帝造题的七分钟2:不保证l<r,然后再加上读入和输出优化,还有开!long!long!少开long long 弄得我百思不得其解。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#define MAXN 100000
using namespace std;
long long lazy[MAXN*],a[MAXN],b[MAXN*];
long long segtree[MAXN*];
int n,m;
long long getin()
{
char ch = getchar();
long long data = ;
while (ch < '' || ch > '')
ch = getchar();
do
{
data = data* + ch-'';
ch = getchar();
} while (ch >= '' && ch <= '');
return data;
}
void putout(long long t){
long long ans[]={},i=;
for(;t;t/=) ans[++i]=t%;
for(;i;i--) putchar(''+ans[i]);
putchar('\n');
}
void adddata(int now)
{
segtree[now]=segtree[(now<<)]+segtree[(now<<)+];
}
void buildtree(int now,int l,int r)
{
if (l==r) {segtree[now]=a[l]; if (segtree[now]== || segtree[now]==) b[now]=; return;}
int mid=(l+r)>>;
buildtree((now<<),l,mid);
buildtree((now<<)+,mid+,r);
adddata(now);
b[now]=b[(now<<)]&b[(now<<)+];
}
long long query(int now,int l,int r,int begin,int end)
{
if (begin<=l && end>=r) return segtree[now];
long long mid=(l+r)>>,ans=;
if (begin<=mid) ans+=query((now<<),l,mid,begin,end);
if (end>mid) ans+=query((now<<)+,mid+,r,begin,end);
return ans;
}
void intchange(int now,int l,int r,int begin,int end)
{
if (b[now]==) return;
if (l==r) {segtree[now]=floor(sqrt(segtree[now])); if (segtree[now]== || segtree[now]==) b[now]=; return;}
int mid=(l+r)>>;
if (begin<=mid) intchange((now<<),l,mid,begin,end);
if (end>mid) intchange((now<<)+,mid+,r,begin,end);
adddata(now);
b[now]=b[(now<<)]&b[(now<<)+];
}
int main()
{
int i;
long long x,y,z;
n=getin();
for (i=;i<=n;i++) a[i]=getin();
buildtree(,,n);
m=getin();
for (i=;i<=m;i++)
{
x=getin();
y=getin();
z=getin();
if (y>z) swap(y,z);
if (x==) putout(query(,,n,y,z));
else intchange(,,n,y,z);
}
return ;
}

【BZOJ3211&3038】花神游历各国&上帝造题的七分钟2(CodeVS)的更多相关文章

  1. 【BZOJ 3211&3038】 花神游历各国 & 上帝造题的七分钟2

    [题目链接] [BZOJ 3211] 点击打开链接 [BZOJ 3038] 点击打开链接 [算法] 线段树 开根操作直接开到叶子节点,注意当区间中所有数都是0或1时,不需要开根 [代码] #inclu ...

  2. bzoj3211花神游历各国&&bzoj3038上帝造题的七分钟2*

    bzoj3211花神游历各国 题意: n个数的序列,m个操作,操作两种:区间开根(向下取整)和区间求和.n≤100000,m≤200000,序列中的数非负且≤109. 题解: 一个≤109的数开6次根 ...

  3. BZOJ 3038: 上帝造题的七分钟2 / BZOJ 3211: 花神游历各国 (线段树区间开平方)

    题意 给出一些数,有两种操作.(1)将区间内每一个数开方(2)查询每一段区间的和 分析 普通的线段树保留修改+开方优化.可以知道当一个数为0或1时,无论开方几次,答案仍然相同.所以设置flag=1变表 ...

  4. 【bzoj3211】花神游历各国&&【bzoj3038】上帝造题的七分钟2

    bzoj3038]上帝造题的七分钟2 Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. “第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟, ...

  5. GSS4 - Can you answer these queries IV || luogu4145上帝造题的七分钟2 / 花神游历各国 (线段树)

    GSS4 - Can you answer these queries IV || luogu4145上帝造题的七分钟2 / 花神游历各国 GSS4 - Can you answer these qu ...

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

    题目 上帝造题的七分钟2 / 花神游历各国 题目背景 XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. 题目描述 "第一分钟,X说,要有数列,于是便给定了一个正整数数列. ...

  7. [bzoj3038/3211]上帝造题的七分钟2/花神游历各国_线段树

    上帝造题的七分钟2 bzoj-3038 题目大意:给定一个序列,支持:区间开方:查询区间和. 注释:$1\le n\le 10^5$,$1\le val[i] \le 10^{12}$. 想法:这题还 ...

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

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

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

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

随机推荐

  1. LightOJ 1030 Discovering Gold(期望 概率)

    正推,到达i的概率为p[i],要注意除了1和n外,到达i的概率并不一定为1 概率表达式为p[i] += p[j] / min(n - j, 6) 从j带过来的期望为exp[i] += exp[j] / ...

  2. OS X thrift setup

    OS X Setup The following command install all the required tools and libraries to build and install t ...

  3. golang channel basic

    package mainimport ( "fmt" "math/rand" "time")func main() { rand.Seed( ...

  4. [Tips] JavaScript 使用hash 对象传参

    转自Web 前端开发修炼之道. 在JavaScript 中funciton 包含多个参数的时候,我们想要实现可选参数的功能,传很多个null 其实是个很讨厌的事情,这个时候就可以使用这个技巧. 具体见 ...

  5. 如何安装sublime text2以及它的插件?

    下载Sublime Text2的安装包,安装,安装后打开的界面如图   下面我们来给他安装插件,首先安装packagecontrol,打开菜单栏中的View-->show console   在 ...

  6. Win7系统怎么开启远程桌面?Win7远程桌面怎么用(转)

    远程桌面服务开启之后,可以方便的远程管理服务器或计算机.为生活和工作带来不少便利呢,很多小伙伴还不知道怎么开启win7远程桌面吧(下面咗嚛以内网远程桌面为例)   工具/原料 Win7 Win7远程桌 ...

  7. Sp EF输出 临时表

    -- ============================================= -- Author: <Author,,Name> -- Create date: < ...

  8. 深入解析结构化异常处理(SEH)

    jpg 改 rar

  9. Java学习笔记(一)——HelloWorld

    一.安装JDK 1.下载链接: http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.直接安装,不能有中文路径 3. ...

  10. supervisor简介

    一什么是supervisor Superviosr是一个UNIX-like系统上的进程监控工具. Supervisor是一个Python开发的client/server系统,可以管理和监控*nix上面 ...