题目

输入格式

输出格式

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

输入样例

4

1 100 5 5

5

1 1 2

2 1 2

1 1 2

2 2 3

1 1 4

输出样例

101

11

11

数据

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

题解

类似于重复开根以及取模之类的操作都有个共性,就是重复取的次数非常少

以本题开根为例,当取到一定次数时,就会变为1

我们用树状数组维护区间和

用并查集维护当前位置往下【包括当前位置】,最近还可以开根的位置

每次暴力开根维护树状数组即可【最多开5*N次】

#include<iostream>
#include<cstdio>
#include<cmath>
#define LL long long int
#define REP(i,n) for (int i = 1; i <= (n); i++)
#define lbt(x) (x & -x)
using namespace std;
const int maxn = 100005,maxm = 100005,INF = 1000000000;
inline int RD(){
int out = 0,flag = 1; char c = getchar();
while (c < 48 || c > 57) {if (c == '-') flag = -1; c = getchar();}
while (c >= 48 && c <= 57) {out = (out << 1) + (out << 3) + c - '0'; c = getchar();}
return out * flag;
}
int N,M,pre[maxn],num[maxn];
LL A[maxn];
void add(int u,LL v){while (u <= N) A[u] += v,u += lbt(u);}
LL query(int u){LL ans = 0; while(u) ans += A[u],u -= lbt(u); return ans;}
LL sum(int l,int r){return query(r) - query(l - 1);}
int find(int u){return u == pre[u] ? u : pre[u] = find(pre[u]);}
int main(){
N = RD();
REP(i,N){
num[i] = RD(); add(i,num[i]);
pre[i] = (num[i] != 0 && num[i] != 1) ? i : i + 1;
}pre[N + 1] = N + 1;
M = RD();
int cmd,l,r,u,v;
while (M--){
cmd = RD(); l = RD(); r = RD();
if (cmd & 1) printf("%lld\n",sum(l,r));
else {
u = find(l);
while (u <= r){
v = (LL)sqrt(num[u]); add(u,v - num[u]);
num[u] = v;
if (num[u] == 1 || num[u] == 0) pre[u] = u + 1;
u++;
}
}
}
return 0;
}

最新文章

  1. WinForm开发之取送货管理2
  2. 数据库开发基础-SQl Server 主键、外键、子查询(嵌套查询)
  3. Android IOS WebRTC 音视频开发总结(六八)-- Google: What&#39;s next for WebRTC
  4. css里设置一个div在顶部固定,不随滚动条滚动而滚动
  5. bzoj 2743 树状数组离线查询
  6. 新安装XAMPP,phpMyAdmin错误:#1045 - Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: NO)
  7. Guice学习(一)
  8. MVC5 学习资料
  9. mysql表结构设计
  10. cmd alias 自定义命令
  11. (译)Windsor入门教程---第四部分 整合
  12. 《java入门第一季》之HashSet存储自定义对象问题以及注意事项
  13. @EnableFeignClients 注解
  14. Is-a
  15. A - Points and Segments CodeForces - 429E
  16. SQL Fundamentals: 子查询 || 分析函数(PARTITION BY,ORDER BY, WINDOWING)
  17. 性能测试二十八:环境部署之Dubbo部署
  18. 洛谷 P1070 道路游戏 解题报告
  19. TCP/IP, UDP, ICMP, ARP协议族简介--纯图慎点
  20. hdu 5063 操作逆推+mul每次要*2%(modo - 1)

热门文章

  1. PHP命令行(CLI模式)
  2. 13.6 模拟事件【JavaScript高级程序设计第三版】
  3. 学习RUNOOB.COM进度一
  4. Codeforces Round #500 (Div. 2) BC
  5. Oozie Coordinator job 之定时任务
  6. 关于C++类模板无法解析的问题
  7. 『Golang』MongoDB在Golang中的使用(mgo包)
  8. flask中static_folder与static_url_path的区别与联系
  9. HDFS常用文件操作
  10. 修复 Ubuntu 中“Unable to lock the administration directory (/var/lib/dpkg/)”