题意:统计一段区间内不同的数的和

分析:排序查询区间,离线树状数组

#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N = 3e4+5;
const int mod = 1e9+7;
LL c[N];
int n,q,x,y,T,pre[N];
struct Node{int v,id;
}a[N];
bool cmpv(Node a,Node b){if(a.v==b.v)return a.id<b.id;return a.v<b.v;
}
bool cmpid(Node a,Node b){return a.id<b.id;
}
void add(int x,LL t){for(int i=x;i<=n;i+=i&(-i))c[i]+=t;
}
LL ask(int x){LL ret=0;for(int i=x;i;i-=i&(-i))ret+=c[i];return ret;
}
struct Que{int l,r,id;bool operator<(const Que &rhs)const{return r<rhs.r;}
}p[100000];
LL ret[100000];
int main(){scanf("%d",&T);while(T--){scanf("%d",&n);for(int i=1;i<=n;++i)scanf("%d",&a[i].v),a[i].id=i;sort(a+1,a+1+n,cmpv);for(int i=1;i<=n;++i){pre[a[i].id]=-1;if(i!=1&&a[i].v==a[i-1].v)pre[a[i].id]=a[i-1].id;}sort(a+1,a+1+n,cmpid);memset(c,0,sizeof(c));scanf("%d",&q);for(int i=0;i<q;++i)scanf("%d%d",&p[i].l,&p[i].r),p[i].id=i;sort(p,p+q);for(int i=0,cur=1;i<q;++i){for(;cur<=p[i].r;++cur){if(pre[cur]!=-1)add(pre[cur],-a[cur].v);add(cur,a[cur].v);}ret[p[i].id]=ask(p[i].r)-ask(p[i].l-1);}for(int i=0;i<q;++i)printf("%I64d\n",ret[i]);  }return 0;
}

View Code

转载于:https://www.cnblogs.com/shuguangzw/p/5741746.html

HDU3333 Turing Tree 离线树状数组相关推荐

  1. HDU 3333 Turing Tree(树状数组/主席树)

    题意 给定一个长度为 \(n​\) 的序列,\(m​\) 个查询,每次查询区间 \([L,R]​\) 范围内不同元素的和. \(1\leq T \leq 10\) \(1 \leq n\leq 300 ...

  2. HDU 3333 Turing Tree(树状数组+离线处理+离散化)

    题目大意 给一个 n(1≤n≤30000) 个数,数的范围是 0~109.现在给了 Q 个询问,询问的内容是:一个区间 [L, R] 中,所有不同的数的和是多少? 其实和 HDU 3874 一个意思 ...

  3. 数据结构一【树状数组】普通、二维、离线树状数组的(单点修改,单点查询,区间修改,区间查询)模板及应用例题总结

    文章目录 树状数组 lowbit 线段树与树状数组 单点修改 区间查询 区间修改 区间求和 二维树状数组 离线树状数组 例题 POJ:stars MooFest [SDOI2009]HH的项链 Tur ...

  4. 2016 UESTC Training for Data Structures K - 郭大侠与甲铁城 CDOJ 1342 离线树状数组

    K - 郭大侠与甲铁城 有一个区间,长度1e5,每个点有一种颜色,颜色属于[1,1000],离线询问某个区间的颜色种树,询问次数也少1e5 我的做法是离线树状数组 首先把区间保存下来,按右端点升序排序 ...

  5. hdu 4605 Magic Ball Game (在线主席树/离线树状数组)

    版权声明:本文为博主原创文章,未经博主允许不得转载. hdu 4605 题意: 有一颗树,根节点为1,每一个节点要么有两个子节点,要么没有,每个节点都有一个权值wi .然后,有一个球,附带值x . 球 ...

  6. 牛客小白9 换个角度思考(离线+树状数组)

    title: 牛客小白9 换个角度思考(离线+树状数组) date: 2018-11-29 15:25:18 tags: [离线,树状数组] categories: ACM 题目链接 题目描述 给定一 ...

  7. 【BZOJ3653】谈笑风生 离线+树状数组+DFS序

    [BZOJ3653]谈笑风生 Description 设T 为一棵有根树,我们做如下的定义: ? 设a和b为T 中的两个不同节点.如果a是b的祖先,那么称"a比b不知道高明到哪里去了&quo ...

  8. bzoj2754:[SCOI2012]喵星球上的点名 (后缀数组+离线+树状数组)

    题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2754 题目分析:最近两个星期都在做数论题,感觉有些无聊.昨天忽然间想起省赛前还有一个这题 ...

  9. [HEOI2012]采花(思维 + 离线 + 树状数组)

    题目链接 分析 我只能说太妙了- 离线 + 树状数组 参考题解: 这个题要和<HH的项链>做对比: 关键就是为什么要离线处理,以及 怎么对区间进行排序和维护: [SDOI2009]HH的项 ...

最新文章

  1. html表格中加入斜线,在HTML中显示带斜线的表格
  2. EDIUS输出到文件
  3. ExtJs选项卡,求大神解答
  4. Windows XP硬盘安装Ubuntu 12.04双系统
  5. Python中@staticmethod和@classmethod的作用和区别
  6. 理解神经网络函数高频成分的收敛率界限
  7. 人人都是 DBA(III)SQL Server 调度器
  8. 【送书福利8本】YYDS《剑指Offer》,百万程序员人手一册
  9. python字典嵌套字典的情况下获取某个key的value
  10. 用JavaScript刷leetcode(刷题 第一天)
  11. 解决无法连接mysql问题
  12. 想满足一点小小的欲望,怎么就这么难……咦?这儿有戏!
  13. 滚动截屏苹果_苹果超好用的长截图软件—滚动截屏免费分享!
  14. png图片转换jpg,保姆级教程一学就会
  15. 特教学校计算机课,北京特教学校引入编程课 计算机语言为听障孩子打开一扇智能之门...
  16. bootstrap btn 按钮颜色 class=btn btn-success
  17. vscode插件扩展 js代码高亮显示问题,美化问题,颜色问题
  18. 顺舟智能获中国电信智慧家庭产业联盟“智慧家庭创新合作奖”
  19. paddleocr学习笔记(一)从官网开始
  20. 学习笔记:SKU组件(React版)

热门文章

  1. elasticsearch ik分词插件配置自定义分词词典
  2. Hibernate快速入门
  3. Highcharts JS去除Highcharts.com链接的方法
  4. android入门程序源代码,安卓程序开发入门
  5. java调试jdk源码_JDK源码调试
  6. php定时发送生日模块消息_Swoft 2.0.5 更新,新增高效秒级定时任务、异常管理组件...
  7. 第一行代码学习笔记第十章——探究服务
  8. react table里跳转页面_如何在react中实现一个table切换?
  9. multisim怎么设置晶体管rbe_Multisim 10在单管共射放大电路中的应用
  10. Qt5 常见的控件类关系