SPOJ3267:D-query
题面
Sol
给定\(N\)个正整数构成的序列,将对于指定的闭区间查询其区间内的不同的数的个数
主席树
不是权值线段树
维护位置
如果插入一个数时发现之前有过了
那么修改当前的,那个位置\(-1\)
然后插入这个数字,在相应的位置\(+1\)
# include <bits/stdc++.h>
# define RG register
# define IL inline
# define Fill(a, b) memset(a, b, sizeof(a))
using namespace std;
typedef long long ll;
const int _(3e4 + 5);
const int __(1e6);
IL int Input(){
RG int x = 0, z = 1; RG char c = getchar();
for(; c < '0' || c > '9'; c = getchar()) z = c == '-' ? -1 : 1;
for(; c >= '0' && c <= '9'; c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48);
return x * z;
}
int n, m, rt[_], tot, o[_], len, a[_], vis[_];
struct HJT{
int ls, rs, sz;
} T[__];
IL void Modify(RG int &x, RG int l, RG int r, RG int p, RG int v){
T[++tot] = T[x], T[x = tot].sz += v;
if(l == r) return;
RG int mid = (l + r) >> 1;
if(p <= mid) Modify(T[x].ls, l, mid, p, v);
else Modify(T[x].rs, mid + 1, r, p, v);
}
IL int Query(RG int x, RG int l, RG int r, RG int L, RG int R){
if(!x) return 0;
if(L <= l && R >= r) return T[x].sz;
RG int mid = (l + r) >> 1, ret = 0;
if(L <= mid) ret = Query(T[x].ls, l, mid, L, R);
if(R > mid) ret += Query(T[x].rs, mid + 1, r, L, R);
return ret;
}
int main(RG int argc, RG char* argv[]){
n = Input();
for(RG int i = 1; i <= n; ++i) o[i] = a[i] = Input();
sort(o + 1, o + n + 1), len = unique(o + 1, o + n + 1) - o - 1;
for(RG int i = 1; i <= n; ++i){
a[i] = lower_bound(o + 1, o + len + 1, a[i]) - o;
rt[i] = rt[i - 1];
if(!vis[a[i]]) vis[a[i]] = i, Modify(rt[i], 1, n, i, 1);
else{
Modify(rt[i], 1, n, vis[a[i]], -1);
vis[a[i]] = i;
Modify(rt[i], 1, n, i, 1);
}
}
m = Input();
for(RG int i = 1; i <= m; ++i){
RG int l = Input(), r = Input();
printf("%d\n", Query(rt[r], 1, n, l, r));
}
return 0;
}
SPOJ3267:D-query的更多相关文章
- 莫队算法学习笔记【BZOJ2038:小Z的袜子】【SPOJ3267:D-query】
很久以前傻乎乎地看来源奇怪的资料的时候被各种曼哈顿弄晕了. 然后现在学会的是分块方法.另新创一个分块方法. 让我们考虑这样一个区间询问问题…… 它有如下的性质: 0,n个数,Q个询问. 1,它没有修改 ...
- mybatis使用map传递多参数报错:A query was run and no Result Maps were found for the Mapped Statement
在使用mybatis进行多参数传递时,报错: A query was run and no Result Maps were found for the Mapped Statement 'xx.xx ...
- mybatis报错:A query was run and no Result Maps were found for the Mapped Statement、、Property [login_ip] not found on type [com.thinkgem.jeesite.common.permission.entity.PremissUser]问题解决
今天在做ssm项目的时候出现了: 先是出现 了错误: mybatis报错:A query was run and no Result Maps were found for the Mapped St ...
- FunDA(1)- Query Result Row:强类型Query结果行
FunDA的特点之一是以数据流方式提供逐行数据操作支持.这项功能解决了FRM如Slick数据操作以SQL批次模式为主所产生的问题.为了实现安全高效的数据行操作,我们必须把FRM产生的Query结果集转 ...
- MySQL的错误:No query specified
在做MySQL主从同步的时候通过: mysql> show slave status\G; *************************** 1. row **************** ...
- lr数据库参数化取数:The query result is empty and same is the parameter file问题原因
出现这个问题的原因: 是因为我们的查询结果存在中文 如果查询结果没有中文,显示正常 解决办法: 新建一个数据源: 重新再选择这个数据源,再次查询: 说明不是连接字符串的问题或者是mysql驱动的问题 ...
- my golib:db query Result
go提供了一套统一操作database的sql接口,任何第三方都可以通过实现相应的driver来访问感兴趣的数据库.譬如我们项目中使用的Go-MySQL-Driver. go提供了一套很好的机制来处理 ...
- SQL Server 2016新特性:Live Query Statistics
SSMS可以提供可以查看正在执行的计划.live query plan可以查看一个查询的执行过程,从一个查询计划操作到另外一个查询计划操作.live query plan提供了整体的查询运行进度和操作 ...
- 转:Hibernate query.list()之卡住问题
某个函数里面有调用Query的list()方法,然后它有时会出现这种症状: 忽然停住不动,但是也没报异常,就是界面死了. 我的查询差不多是这样: Query q=sessionFactory.open ...
随机推荐
- [Python Study Notes]CS架构远程访问获取信息--Client端v1.0
更新内容: 1.添加entry栏默认ip和port口 2.修正退出功能 3.添加退出自动关闭窗口功能 4.优化cpu显示为固定保留两位小数 '''''''''''''''''''''''''''''' ...
- 深入理解vue
一 理解vue的核心理念 使用vue会让人感到身心愉悦,它同时具备angular和react的优点,轻量级,api简单,文档齐全,简单强大,麻雀虽小五脏俱全. 倘若用一句话来概括vue,那么我首先想到 ...
- LocalMaxima_NOI导刊2009提高(1)
先打表,发现\(ans=\sum_{i=1}^n\frac{1}{i}\) 对于小数据可以直接打表 数据很大时,精度相对就比较宽松 欧拉-马斯刻若尼常数=调和级数-自然对数 调和级数为:\(\sum_ ...
- iOS7动态调整文字大小
iOS7添加了动态调整文字的大小,app可以通过接受通知的方式进行设置 iOS 7 introduces Dynamic Type, which makes it easy to display gr ...
- CSS3总结(干货)
1.css3中好用的选择器 :target //突出显示活动的HTML锚 ::after / ::before{content:" ";} //content必须有,若无内容,用空 ...
- 二分图最大匹配模板【匈牙利;Dinic最大流】
二分图最大匹配模板[匈牙利:Dinic最大流] 匈牙利算法 int n,m; vector<int> map[100010]; int match[100010];//保存匹配的互相点 b ...
- 二、Item Pipeline和Spider-----基于scrapy取校花网的信息
Item Pipeline 当Item在Spider中被收集之后,它将会被传递到Item Pipeline,这些Item Pipeline组件按定义的顺序处理Item. 每个Item Pipeline ...
- PowerDesigner 简单应用(转载)
PowerDesigner是一款功能非常强大的建模工具软件,足以与Rose比肩,同样是当今最著名的建模软件之一.Rose是专攻UML对象模型的建模工具,之后才向数据库建模发展,而PowerDesign ...
- 基于epoll实现简单的web服务器
1. 简介 epoll 是 Linux 平台下特有的一种 I/O 复用模型实现,于 2002 年在 Linux kernel 2.5.44 中被引入.在 epoll 之前,Unix/Linux 平台下 ...
- 关于UIButton嵌入到UIView点击无反应问题的解决方法和delegate的简单用法示例(转载)
做项目封装UIView的时候碰到的问题,没想到有个哥们儿还写成博客,特此收藏! 问题是这样的,几个界面用到同一个自定义返回按钮,于是就想着把这个按钮单独封装起来,添加一个UIView类,在里面自定义U ...