SPOJ DQUERY:D-query】的更多相关文章

题目链接 题意:n个数 m个查询 查询的是[l, r]区间内不相同的数的个数 没有修改,因此静态的主席树就好了 将重复的元素建树即可 query的时候加起来,用区间长度(r-l+1)去减就是答案 (query的是[l, r]之间重复元素的个数) typedef long long LL; #define lson l, m #define rson m+1, r ; ], R[N<<], sum[N<<]; int tot; int a[N], T[N]; int read() {…
D-query Time Limit: 227MS   Memory Limit: 1572864KB   64bit IO Format: %lld & %llu Submit Status Description English Vietnamese Given a sequence of n numbers a1, a2, ..., an and a number of d-queries. A d-query is a pair (i, j) (1 ≤ i ≤ j ≤ n). For e…
版权声明:本文为博主原创文章,未经博主允许不得转载. SPOJ DQUERY 题意: 给出一串数,询问[L,R]区间中有多少个不同的数 . 解法: 关键是查询到某个右端点时,使其左边出现过的数都记录在它们出现的最右位置置1,其他位置置0,然后直接统计[L,R]的区间和就行了. 在线和离线都可以做 . 话不多说,上代码 . 在线主席树 #include <iostream> #include <cstdio> #include <algorithm> #include &…
LINK 题意:给出$(n <= 30000)$个数,$q <= 2e5$个查询,每个查询要求给出$[l,r]$内不同元素的个数 思路:这题可用主席树查询历史版本的方法做,感觉这个比较容易想到...但是主席树不太会用 其次可以用莫队分块的方法暴力过,再来就是使用树状数组维护不同数量的前缀和了,如果不使用离散化直接用map的话还会TLE... 通过维护当前位置上的数所记录的下标最靠右(即最近一次出现的位置),一边维护数量的前缀和,一边检查是否到达某个查询的右边界,再通过前缀性质减一下就得出了.…
链接:SPOJ - DQUERY 题意:求给定区间不同数的个数(不更新). 题解:离线+树状数组. 对所求的所有区间(l, r)根据r从小到大排序.从1-n依次遍历序列数组,在树状数组中不断更新a[i]出现的最后一个位置.更新:将a[i]所在位置i在树状数组中加1(add(i, 1)),并消去a[i]上次出现的位置上的1(add(lasta[i], -1)).当遍历到i == r时,就保存答案(sum[r] - sum[l-1]). #include<bits/stdc++.h> using…
题目 Source http://www.spoj.com/problems/DQUERY/en/ Description Given a sequence of n numbers a1, a2, ..., an and a number of d-queries. A d-query is a pair (i, j) (1 ≤ i ≤ j ≤ n). For each d-query (i, j), you have to return the number of distinct elem…
主席树/树状数组.给一个区间,多次询问[l,r]内有多少个不重复的元素.每个前缀都建线段树,询问直接r的[l,r]就可以了.(似乎对主席树有一点了解了?...话说spoj好高级的样子... #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define REP(i,s,t) for(int i=s;i<=t;i+…
http://www.spoj.com/problems/QTREE/ 这是按边分类的. 调试调到吐,对拍都查不出来,后来改了下造数据的,拍出来了.囧啊啊啊啊啊啊 时间都花在调试上了,打hld只用了半小时啊囧. 第一次打边分类真没注意一个地方. 就是当fx==fy后,没有判断x==y,然后这是边分类,获得的是父亲的下标,果断错.. 囧,一定要记住这个错误. #include <cstring> #include <cstdio> #include <iostream>…
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=32356 Given a sequence of n numbers a1, a2, ..., an and a number of d-queries. A d-query is a pair (i, j) (1 ≤ i ≤ j ≤ n). For each d-query (i, j), you have to return the number of dist…
DQUERY - D-query Given a sequence of n numbers a1, a2, ..., an and a number of d-queries. A d-query is a pair (i, j) (1 ≤ i ≤ j ≤ n). For each d-query (i, j), you have to return the number of distinct elements in the subsequence ai, ai+1, ..., aj. In…