【bzoj1878】[SDOI2009]HH的项链

原创 2015年11月20日 23:45:18

莫队裸题。

#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=a,_=b;i<=_;i++)
#define per(i,a,b) for(int i=a,_=b;i>=_;i--)
#define maxn 50007
#define maxm 200007

inline int rd() {
    char c = getchar();
    while (!isdigit(c)) c = getchar() ; int x = c - '0';
    while (isdigit(c = getchar())) x = x * 10 + c - '0';
    return x;
}

int len;

struct query {
    int l , r , t;
    bool operator<(const query x) const {
        if (l / len == x.l / len) return r < x.r;
        return l / len < x.l / len;
    }
}q[maxm];

int n , m , res[maxm] , a[maxn] , ans;
int cnt[maxm * 5 + 1];

void input() {
    n = rd();
    len = (int) sqrt(n + 0.5);
    rep (i , 1 , n) a[i] = rd();
    m = rd();
    rep (i , 1 , m) q[i].l = rd() , q[i].r = rd() , q[i].t = i;
    std::sort (q + 1 , q + m + 1);
}

void solve() {
    cnt[a[1]] = 1 , ans = 1;
    for (int i = 1 , l = 1 , r = 1;i <= m;i ++) {
        for (;r < q[i].r;) ++ r , ans += (cnt[a[r]] ++ == 0);
        for (;r > q[i].r;) ans -= (cnt[a[r]] -- == 1) , r --;
        for (;l > q[i].l;) -- l , ans += (cnt[a[l]] ++ == 0);
        for (;l < q[i].l;) ans -= (cnt[a[l]] -- == 1) , l ++;
        res[q[i].t] = ans;
    }
    rep (i , 1 , m) printf("%d\n" , res[i]);
}

int main() {
    #ifndef ONLINE_JUDGE
        freopen("data.txt" , "r" , stdin);
    #endif
    input();
    solve();
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

BZOJ 1878 [SDOI2009]HH的项链 离线+树状数组

BZOJ 1878 [SDOI2009]HH的项链 离线+树状数组
  • wzq_QwQ
  • wzq_QwQ
  • 2015年05月06日 14:12
  • 1138

bzoj1878 [SDOI2009]HH的项链 主席树

题意:求区间不同自然数个数。 主席树裸题,记录一下last[a[i]]表示上一个数出现的位置,然后用主席树预处理差分一波,接着就可以直接做了。 还要在细一点的话,就是说,我在i这个位置上把ai加上...
  • qq_35866453
  • qq_35866453
  • 2017年10月23日 22:19
  • 62

[SDOI2009]HH的项链

题目描述HH 有一串由各种漂亮的贝壳组成的项链。HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH 不断地收集新的贝壳,因此,他的项链变得越来越长。有...
  • sinat_34943123
  • sinat_34943123
  • 2016年12月25日 10:12
  • 292

【bzoj1878】HH的项链(莫队)

莫队
  • zhaoyh2000
  • zhaoyh2000
  • 2017年02月11日 20:59
  • 196

[BZOJ1878][SDOI2009]HH的项链

十几分钟码完T了差不多一个小时,最后发现分块那里除写成模……这个状态真是没救了……...
  • Zvezda_
  • Zvezda_
  • 2015年09月05日 12:41
  • 347

bzoj1878: [SDOI2009]HH的项链

传送门 大力莫队算法一点不虚。 我们先将序列分成sqrt(N)块 然后将询问按照左端点坐在快编号为第一关键字,右端点为第二关键字进行排序。 然后我们只需要在两次询问之间进行修改就可以了 可以...
  • zhouyuyang233
  • zhouyuyang233
  • 2017年07月07日 21:09
  • 77

SDOI2009 bzoj1878 HH的项链

1878: [SDOI2009]HH的项链 Time Limit: 4 Sec  Memory Limit: 64 MB Submit: 4988  Solved: 2472 [Submit]...
  • hpp__hpp
  • hpp__hpp
  • 2017年11月07日 12:39
  • 29

BZOJ1878: [SDOI2009]HH的项链

这题好多做法线段树树状数组树套树分块莫队什么的,然后果断打了莫队(懒得动脑子) 一开始时间以为过不了结果过去了转移的话维护每个位置前一个和后一个和它相同颜色的位置就行了code:#include #...
  • L_0_Forever_LF
  • L_0_Forever_LF
  • 2016年12月13日 17:05
  • 565

bzoj1878 [SDOI2009]HH的项链

Description HH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH不断地收集新的贝壳,因此,他的项链变得...
  • qq_21494715
  • qq_21494715
  • 2017年01月23日 20:03
  • 122

[BZOJ1878] [SDOI2009]HH的项链

传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1878题目大意给定一个序列,求一个区间内有多少个不同的数题解核心是离线处理 我们先定义next...
  • slongle_amazing
  • slongle_amazing
  • 2015年11月01日 19:18
  • 512
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【bzoj1878】[SDOI2009]HH的项链
举报原因:
原因补充:

(最多只允许输入30个字)