【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;
}

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

【bzoj1878】[SDOI2009]HH的项链

在bzoj上又迷之RE了,在洛谷上AC了,不知道o2有什么关键字不能用 = =,最后把标程交了上去心理AC了。 思路就是扫描法,因为这道题是肯定不能在线做的,所以考虑离线,扫描线,先把第一次出现的值...

[SDOI2009]HH的项链

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

bzoj 1878 [SDOI2009]HH的项链

区间离线操作不带修改的万能做法就是莫队了。
  • czysjr
  • czysjr
  • 2014年12月19日 19:19
  • 374

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

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

【SDOI2009】【bzoj1878】HH的项链(离线+树状数组)

我不相信手掌的纹路,但我相信手掌加上手指的力量。

BZOJ1878(SDOI2009)[HH的项链]题解--莫队

bzoj1878
  • CHNWJD
  • CHNWJD
  • 2017年05月28日 22:38
  • 199

[BZOJ]1878: [SDOI2009]HH的项链 莫队算法

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

BZOJ1878: [SDOI2009]HH的项链(树状数组+离线)

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

BZOJ 1878: [SDOI2009]HH的项链 树状数组+乱搞

树状数组+乱搞

BZOJ P1878[SDOI2009]HH的项链

直接离线加上一个巧妙的前缀和 就是类似于边表存一个某一个元素的第一次出现的位置和下一次 然后离线询问之后从左往后扫 扫到某一个元素就把这个元素的下一个位置加一,然后每一个询问求一个区间和就可以了...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【bzoj1878】[SDOI2009]HH的项链
举报原因:
原因补充:

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