3211: 花神游历各国

Time Limit: 5 Sec  Memory Limit: 128 MB
Submit: 4057  Solved: 1480
[Submit][Status][Discuss]

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 数据已加强

由于是开方,所以每个数的开放次数不超过logn次,用树状数组维护前缀和,对于修改操作变为单点修改。

用并查集维护当前节点之前的最近的一个非1节点。

复杂度o(nlog2n)

 #include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
int read() {
int x=;char ch=getchar();
while(!isdigit(ch)) ch=getchar();
while(isdigit(ch)){x=x*+ch-'';ch=getchar();}
return x;
}
int n,m;
long long sum[];
long long a[];
int fa[];
int find(int x){return fa[x]==x?fa[x]:fa[x]=find(fa[x]);}
int lowbit(int x){return x&(-x);}
void add(int x,long long val) {
for(int i=x;i<=n;i+=lowbit(i)) sum[i]+=val;
}
void change(int x,long long val) {
for(int i=x;i<=n;i+=lowbit(i)) sum[i]=sum[i]-val+(long long)sqrt(val);
}
long long query(int x) {
long long ans=;
for(int i=x;i>;i-=lowbit(i)) ans+=sum[i];
return ans;
}
int main() {
n=read();
for(int i=;i<=n;i++) {a[i]=read();add(i,a[i]);}
for(int i=;i<=n;i++) fa[i]=i;
m=read();
while(m--) {
int x=read(),l=read(),r=read();
if(x==) {
int now=find(r);
while(now>=l) {
change(now,a[now]);
a[now]=sqrt(a[now]);
if(a[now]<=) fa[now]=find(fa[now-]);
now=find(fa[now-]);
}
}
else {
printf("%lld\n",query(r)-query(l-));
}
}
return ;
}

最新文章

  1. java 字符串转成 json 数组并且遍历
  2. TEX学习笔记
  3. 经验分享:CSS浮动(float,clear)通俗讲解
  4. MyEclipse Spring 学习总结二 Bean的生命周期
  5. HDU-4507 吉哥系列故事——恨7不成妻 数位DP
  6. Shell脚本:使用rsync备份文件/目录
  7. 空间session失效的解决方法
  8. 使用VS连接SQLServe时提示未能载入文件或程序集“System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKey
  9. SQL把做个字段组合成一个字符串
  10. 巧用test判断来写shell脚本
  11. java基础之类与对象3
  12. [我所理解的REST] 3.基于网络应用的架构
  13. offline页面开发常用方法及页面控件验证
  14. C++多态及其实现原理
  15. C# 处理Excel公式(一)——创建、读取Excel公式
  16. Codeforces 513E2 Subarray Cuts dp (看题解)
  17. jquery实现同时展示多个tab标签+左右箭头实现来回滚动(美化版增加删除按钮)
  18. layui upload 后台获取不到值
  19. js之添加浏览器历史记录
  20. web(二)html

热门文章

  1. [转]多多“亦”善:把大量内容放到一页PPT的5个技巧
  2. redis系列文章目录
  3. PJSIP-PJLIB(samples) (the usage of the pjlib lib) (eg:string/I/O)
  4. 恢复误删除表黑科技之relay log大法
  5. python 学习分享-select等
  6. day02-python基础2
  7. StaticBox布局管理器
  8. 孤荷凌寒自学python第四十七天通用跨数据库同一数据库中复制数据表函数
  9. 聊聊、Spring ServletContainerInitializer
  10. Struts2 学习笔记